Eu tenho um formulário com muitos campos de entrada.
Quando eu pego o evento de envio do formulário com jQuery, é possível obter todos os campos de entrada desse formulário em um array associativo?
$('#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();
});
});
Graças à dica de Simon_Weaver, aqui está outra maneira de fazê-lo, utilizando serializeArray
:
var values = {};
$.each($('#myForm').serializeArray(), function(i, field) {
values[field.name] = field.value;
});
Note que este trecho irá falhar em <selecione múltiplos>
elementos.
Parece que as novas entradas de formulário HTML 5 don't funcionam com serializeArray
em jQuery versão 1.3. Isto funciona na versão 1.4+.