Tengo un formulario con muchos campos de entrada.
Cuando capto el evento del formulario de envío con jQuery, ¿es posible obtener todos los campos de entrada de ese formulario en un array asociativo?
$('#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();
});
});
Gracias al consejo de Simon_Weaver, aquí hay otra forma de hacerlo, usando serializeArray
:
var values = {};
$.each($('#myForm').serializeArray(), function(i, field) {
values[field.name] = field.value;
});
Ten en cuenta que este fragmento fallará en los elementos <select multiple>
.
Parece que las nuevas entradas de formulario HTML 5 no funcionan con serializeArray
en la versión 1.3 de jQuery. Esto funciona en la versión 1.4+