2010-12-31 14 views
0

Ich bin neu in jQuery und ich versuche, dies zu implementieren:jQuery/Entfernen mit dynamischem PHP Inhalt

In meiner PHP-Seite, würde Ich mag so etwas wie ein Add tun/Entfernen/Symbol (bitte ankreuzen : http://muiomuio.com/tutorials/jquery/add-remove/http://muiomuio.com/web-design/add-remove-items-with-jquery), und wenn das Hinzufügen angeklickt wird, möchte ich eine neue Reihe von Feldern anzeigen (insbesondere Dropdown-Menüs). In dem Beispiel, das ich oben zeige, hat es nur 1 Textfeld.

Dies sind jedoch keine normalen Felder, ich möchte, dass sie mit Werten aus der Datenbank gefüllt werden, und einige von ihnen müssen interaktiv sein. Mit anderen Worten, AJAX aktiviert. Also möchte ich in meiner PHP-Seite eine Abfrage machen, um mit diesen interaktiven Teilen umzugehen.

Um genauer zu sein, nennen wir dieses "neue" Element eine Zeile. Eine Zeile enthält:

Service: Drop Down Menü (statisch, keine Notwendigkeit, einen Aufruf an die Datenbank jedes Mal ein neues Objekt Zeile erstellt wird zu tun)

Store: Drop Down-Menü (dynamic ajax, wird es das Service-Drop-Down-Menü überprüfen und basierend auf seinem Wert, wird er aus der Datenbank in die Läden gehen holen, die diesen Dienst zur Verfügung stellen)

Status: Drop Down Menü (statisch, keine Notwendigkeit zu tun, einen Rufen Sie jedes Mal, wenn eine NEUE Artikelzeile erstellt wird, in die Datenbank auf.

Jetzt von dieser einfachen Demo, weiß ich, wie man das hinzufügen/entfernen-Feature, aber ich weiß nicht, wie der Datenbankaufruf die Werte des Dropdown-Menüs abrufen. Ich weiß auch nicht, wie ich die dynamische "Store" -Liste erstellen soll, die den Wert des Service-Menüs der Zeile annimmt.

Also, wenn wir 10 Zeilen haben, hat jede ihren Dienst, und ändern Sie den Dienst in row1, sollte nichts als die Store-Liste Werte von row1 beeinflussen .. und so weiter .. So sind sie separate Zeilen.

Bitte helfen Sie, wie Sie dies anvisieren. Vielen Dank!

Antwort

1

Okay, ich nehme an, du hast hinzugefügt und entfernt alles aussortiert, aber trotzdem wäre es gut, einen Blick darauf zu werfen Ihr Code und sehen, ob Sie es in einer Weise umgesetzt werden, dass jedes neue Element einzigartige identifizierter zum Beispiel hat:

<select id="service-1">.....</select> 
<select id="store-1">......</select> 
<select id="status-1">.....</select> 

<select id="service-2">.....</select> 
<select id="store-2">......</select> 
<select id="status-2">.....</select> 

Nun zum Javascript. Im Grunde müssen Sie jQuery sagen, dass wenn das Ereignis onChange für das Service-Auswahlfeld eintritt, es seinen Bezeichner herausfinden, Daten vom Server anfordern und den Inhalt in einem Element mit dem ID-Speicher + Bezeichner, den Sie gerade benutzt haben, ersetzen muss.

$('select[id^="service-"]').change(function(){ 
    var id = $(this).attr('id'); 
    id = id.replace('service-', ''); 

    var someValue = $(this).val(); 

    $.get('/fetch/content/from/this/url?param='+someValue, function(data){ 
     $('#store-' + id).html(data); // that would be if your script returns HTML. 
             // You can easily alter the functionality to 
             // rebuild the dropdown menu from JSON object 
             // or something like that 
    });        
}); 

Und das ist es im Grunde genommen.:)

Oh, und bitte, wenn es nicht funktioniert, lassen Sie mich wissen, es kann einige Dom Manipulation haben, die ich vergessen habe. Ich habe es nicht getestet, aber ich habe diese Methode eine Milliarde Mal benutzt, also ist es definitiv der Trick.

0

So viel wie ich nicht empfehlen möchte, ist Ihre beste Wette möglicherweise bereits ausgefüllte Felder. Erstellen Sie die Dropdown-Menüs mit PHP und verstecken Sie sie dann mit jQuery. Wenn es nicht zu viele von ihnen gibt, sollte es keinen großen Leistungseinbruch geben.

Sofern ich Ihre Frage nicht missverstanden habe, denke ich, dass dies die einfachste Lösung wäre.

+0

Klingt gut für mich. Lass mich versuchen und sehen, ob die Dinge auf diese Weise gut für mich funktionieren. =) – johnshaddad

0

würde es nicht am besten sein, die Werte in einer SESSION zu speichern? Und dann würden Sie bei der Erstellung eines neuen Feldes nur die Variable SESSION aufrufen? Du hättest nur einen Anruf bei der db und alle deine Daten im Speicher ...

Verwandte Themen