2008-10-05 14 views

Antwort

7

Als ich dies für ein tat Projekt, fand ich, dass die Einstellung der Wert von Auswahlfeldern, Optionsfeldern und Kontrollkästchen komplexer Code, etwas in der folgenden Richtung erforderlich:

Ich habe diesen Code nicht getestet, also hoffe ich, dass es keine dummen Syntaxfehler gibt, die ich hätte fangen sollen. Hoffe das hilft.

Ich bin nicht erlaubt, die Kommentare hier (noch) zu kommentieren, so .... Wie im Kommentar erwähnt, behandelt die jQuery. Val (val) -Methode Einstellung Radio Optionsfelder, Kontrollkästchen und wählt.

Sie müssen weiterhin select [name = ...] in Ihr jQuery-Auswahlmuster einfügen oder die Auswahlelemente werden nicht aktualisiert.

+3

werfen Sie einen Blick auf die val() -Funktion. Es behandelt all diese Fälle für Sie, glaube ich. – nickf

+0

Funktioniert gut, aber in der Tat kümmert sich die val() - Funktion um Auswahl- und andere Typen, so dass Sie den Schalter nicht verwenden müssen, ein einfacher jQuery (this) .val (value) genügt in allen Fällen. – gaborous

10

Wenn Ihr Formularelemente haben ihre ID an den Feldnamen gesetzt:

$.each(myAssocArry, function(i,val) { $('#'+i).val(val); }); 
+0

Dies scheint zu Kontrollkästchen fehlen. Sie überprüft sie nicht, stattdessen ändert sie den für sie definierten Wert. – Pentium10

5

Oder ähnlich dem vorherigen Vorschlag anstelle von ids die Feldnamen:

$.each(data, function(name,value) { 
    $("input[name='" + name + "']").val(value); 
}); 
+0

Gute Antwort, aber das wird keine Auswahlboxen oder Textfelder aufnehmen. Ändere vielleicht "input [name = ...]" in "* [name = ...]"? Außerdem habe ich gerade einen Syntaxfehler in Ihrem Code behoben. – nickf

+0

Ich bin mir nicht sicher, ob '*' funktionieren würde, und es könnte etwas intensiv sein, wenn es das tut. Sie könnten die anderen Optionen durch Kommata getrennt hinzufügen - $ ("input [name ...], wählen Sie [name ...], textarea [name ...]). Val ... –

+0

Sie können $ (": Eingabe [Name = ... ") und es sollte wählen und Text Bereiche (beachten Sie den Doppelpunkt). –

1

Ich habe nicht gesehen jQuery handle Übergabe eines einzelnen (Nicht-Array) Wert in val() für eine Radio-oder Kontrollkästchen-Eingabe. Sie müssen sicherstellen, dass der einzelne Wert in ein Array eingeschlossen wird.

Ich wollte die Werte der button-ish Eingänge auch nicht ändern, also filtere ich diese raus.

Hier ist eine Funktion, die das Array-Wrapping, Button-Filtering behandelt und auch die Eingabeauswahl auf ein bestimmtes Formularelement beschränkt. Der Formularparameter ist optional. Wenn sie aus/null/undefiniert bleibt, werden alle Eingaben auf der Seite ausgewählt.

function populateForm(data, form) { 
    $.each(data, function(name, value) { 
     var input = $(":input[name='" + name + "']:not(:button,:reset,:submit,:image)", form); 
     input.val((!$.isArray(value) && (input.is(':checkbox') || input.is(':radio'))) ? [ value ] : value); 
    }); 
}; 
Verwandte Themen