У мене є форма з багатьма полями введення.
Коли я перехоплюю подію відправки форми за допомогою 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+ це працює
Асоціативний? Не без певної роботи, але можна використовувати загальні селектори:
var items = new Array();
$('#form_id:input').each(function (el) {
items[el.name] = el;
});