Отримання полів введення форми за допомогою jQuery?

У мене є форма з багатьма полями введення.

Коли я перехоплюю подію відправки форми за допомогою jQuery, чи можна отримати всі поля введення цієї форми в асоціативному масиві?

Рішення
$('#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();
    });

});

Завдяки підказці від Simon_Weaver, ось ще один спосіб, як це можна зробити, використовуючи `serializeArray:

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

Зауважте, що цей фрагмент не спрацює на <select multiple> елементах.

Виявляється, що нові вхідні дані форми HTML 5 не працюють з erializeArray в jQuery версії 1.3. У версії 1.4+ це працює

Коментарі (18)

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

Змінна elements буде містити всі вхідні дані, вибірки, текстові області та набори полів у формі.

Коментарі (0)

Асоціативний? Не без певної роботи, але можна використовувати загальні селектори:

var items = new Array();

$('#form_id:input').each(function (el) {
    items[el.name] = el;
});
Коментарі (3)