[jQuery-es] Serializando datos de formulario

David Arango arango en gmail.com
Sab Dic 2 11:02:20 PST 2006


On 12/2/06, Ale Muñoz <bomberstudios en gmail.com> wrote:
> para un pequeño proyecto personal, necesito "serializar" los datos de
> un formulario cuando el usuario pulse el botón de "Submit".

En la api de Jquery tienes un ejemplo de como utilizar el método
serialize() [1] para conseguir lo que dices:

$("input[@type=text]").serialize();

El único problema es que por ejemplo para selects de múltiple opción
sólo te retornará un valor. Si necesitas eso te recomiendan utilizar
el plugin de formularios [2], aunque yo no lo he probado.

De todas formas no parece muy complicado hacerlo a patita, depende de
la complejidad del formulario, claro:

var formSerializer =  {
	json: {},

	init: function() {
		$('form.parseable input,form.parseable textarea,form.parseable
select').each(function() {
			formSerializer.json[this.id] = this.value;
		});
		console.log("%s", formSerializer.json.toJSONString());
	}
}

Esto es más simple que una patata pero cubre gran parte de lo que
necesitas (inputs de texto, textareas y selectes de una opción), para
que maneje bien selects multiopción, checkboxes y tal hay que hacer un
poco de branching, pero no es demasiado largo, de nuevo depende de lo
grande que los tengas (los requerimientos) :-D

toJSONString es un método pillado directamente de Douglas Crockford [3]

[1] http://jquery.com/api/#serialize
[2] http://www.malsup.com/jquery/form/
[3] http://www.json.org/json.js

-- 
David Arango, el único desarrollador con una orden de alejamiento de
Jeffrey Zeldman
Simplelogica.net, ahora con un 33,3% más de intromisión en listas de correo

Cuando no hago otra cosa escribo en mildiez.net


Más información sobre la lista de distribución jquery-es