2012-03-06 10 views
29

no he encontrado una respuesta concreta en cuanto a si esto es posible, pero parece que debería ser ...jQuery serializar/serializeArray de un elemento que no es una forma

me gustaría serializar todos los elementos de entrada contenidos en un div. No puedo usar un formulario, porque estaría anidado dentro de otro formulario. Entonces obtendría los valores y los publicaría a través de ajax.

Aquí está el ejemplo jsFiddle estoy jugando con:

http://jsfiddle.net/9uyz5/

Si cambio de la raíz a una funciona como se esperaba.

Gracias por su ayuda.

He modificado el jsFiddle de esta otra pregunta: ¿

https://stackoverflow.com/a/1186309/25020

+0

He escrito una respuesta en blog a tu pregunta. Aquí se muestra cómo serializar elementos dom. También he cubierto la posibilidad de crear una cadena JSON para insertarla en la base de datos: http://onwebdev.blogspot.com/2012/03/jquery-serialize-elements-outside-forms.html –

+0

Posible duplicado de [jquery para serializar solo elementos dentro de un div] (http://stackoverflow.com/questions/1829519/jquery-to-serialize-only-elements-within-a-div) – showdev

Respuesta

49

necesita para serializar todas las entradas dentro de su contenedor, no el propio recipiente. por lo que:

$('div :input').serialize() 
+0

por curiosidad, me parece algo inesperado, por qué ¿Funciona $ ('# myForm'). serialize()? –

+3

Un poco tarde lo sé pero '' $ ('# myForm'). Serialize() 'funciona porque está diseñado para serializar todos los elementos en forma ** o ** una matriz jQuery de elementos de entrada. [Como se indica en los documentos] (http://api.jquery.com/serialize/) – Liam

3

esto también funciona con

$('div :input').serializeArray() 

:)

1

para serializar el contenido del div con un botón que esta será la manera más eficiente, ya que no atraviesa a través todo el dom

$(this).closest('div').find("input,select").serialize();

asegúrese de conectar esta con el evento de botón y asegúrese de incluir event.preventdefault con el botón de modo que no presenta la forma primaria si el div está dentro de él.

6

Pruebe esto, para obtener todo.

$('#divID *').serialize() 
Cuestiones relacionadas