Formular-Eingabefelder mit jQuery? abrufen

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?

Lösung
$('#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, hier ist eine andere Möglichkeit, wie Sie es tun können, mit serializeArray:

var values = {};
$.each($('#myForm').serializeArray(), function(i, field) {
    values[field.name] = field.value;
});

Beachten Sie, dass dieses Snippet bei <select multiple> Elementen fehlschlagen wird.

Es scheint, dass die [neuen HTML 5 Formulareingaben] (http://diveintohtml5.ep.io/forms.html) nicht mit serializeArray in jQuery Version 1.3 funktionieren. Dies funktioniert in Version 1.4+

Kommentare (18)
$('#myForm').bind('submit', function () {
  var elements = this.elements;
});

Die Variable elements enthält alle Eingaben, Auswahlmöglichkeiten, Textbereiche und Feldsätze innerhalb des Formulars.

Kommentare (0)

Assoziativ? Nicht ohne einige Arbeit, aber Sie können generische Selektoren verwenden:

var items = new Array();

$('#form_id:input').each(function (el) {
    items[el.name] = el;
});
Kommentare (3)