Ich habe ein Formular mit vielen Eingabefeldern.
Wenn ich das Submit-Formular-Ereignis mit jQuery abfangen, ist es möglich, alle Eingabefelder dieses Formulars in einem assoziativen Array zu erhalten?
Ich habe ein Formular mit vielen Eingabefeldern.
Wenn ich das Submit-Formular-Ereignis mit jQuery abfangen, ist es möglich, alle Eingabefelder dieses Formulars in einem assoziativen Array zu erhalten?
$('#myForm').submit(function() {
// get all the inputs into an array.
var $inputs = $('#myForm :input');
// not sure if you wanted this, but I thought I'd add it.
// get an associative array of just the values.
var values = {};
$inputs.each(function() {
values[this.name] = $(this).val();
});
});
Dank des Tipps von Simon_Weaver gibt es noch eine andere Möglichkeit, wie Sie es machen können, nämlich mit serializeArray
:
var values = {};
$.each($('#myForm').serializeArray(), function(i, field) {
values[field.name] = field.value;
});
Beachten Sie, dass dieses Snippet nicht funktioniert, wenn <select multiple>
Elemente.
Es scheint, dass die neue HTML 5-Formulareingaben arbeiten nicht mit serializeArray
in jQuery Version 1.3. Dies funktioniert in Version 1.4+
Das ist wirklich die beste Antwort. Sie behält sogar jede Array-Formatierung, die Sie für Ihre Eingabefelder haben könnten. Ich glaube nicht, dass die Antwort von nickf tatsächlich Ihre Datenstrukturen intakt halten würde, wenn es zum Beispiel mit Zend_Form gebildet wurde, wo Sie field[something] und field[something_else] als Namen der Eingaben haben... zumindest semantisch, kann ich nicht sehen, wie es...
Laut den jQuery-API-Dokumenten, .serialize()
( api.jquery.com/serialize ) fasst alle Elemente des Formulars in einem einzigen String zusammen, der an eine URL in einem Query-String angehängt werden kann, was im Wesentlichen eine GET-Formularanforderung nachahmt. Dies würde nicht erreichen, was nickf's Antwort erreicht.
Wissenswertes: .serialize()
funktioniert auch bei reinen Formularelementen. Also $('form select').serialize()
werden die Daten nur für Selects serialisiert.
En jquery.form Plugin kann helfen, was andere suchen, die auf diese Frage landen. Ich bin nicht sicher, ob es direkt tut, was Sie wollen oder nicht.
Außerdem gibt es die serializeArray Funktion.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
24 Stimmen
Das ist eine gute Frage; tatsächlich finde ich es wirklich seltsam, dass jQuery keine Funktion hat, die genau das tut. Es gibt Funktionen, um die Formulardaten in zwei verschiedenen Formaten zu erhalten, aber nicht die, die am bequemsten für, Sie wissen, Skripting (Vielleicht sollte .val() ein solches Array zurückgeben, wenn es für ein Formularelement aufgerufen wird?)