2011-12-13 13 views
5

Tengo un formulario que incorpora otra forma:números de serie a un subconjunto de forma

<form> 
    <input type="text" name="main[name]"> 
    <textarea name="main[body]"></textarea> 
    <div id="embedded"> 
    <input type="text" name="main[embedded][name]"> 
    <textarea name="main[embedded][body]"></textarea> 
    </div> 
</form> 

necesito para serializar el formulario incrustado solamente.

$('#embedded').serialize() resultados en una cadena vacía.

Respuesta

6

No está incrustando otro formulario, está incrustando un div.

El método serialize() solo se puede invocar en elementos form o en el elemento form.

var serialized = $('#embedded').find(':input').serialize(); 

El método .serialize() puede actuar sobre un objeto jQuery que ha seleccionado los elementos de formulario individuales, tales como <input>, <textarea>, y <select>. Sin embargo, normalmente es más fácil seleccionar la etiqueta <form> sí para la serialización:

+2

'¿Qué hay de $ ('# embedded'). find (': input'). serizalise() '? – Dziamid

+0

@Dziamid: Eso sería mejor. Olvidé que existió. Respuesta actualizada – Matt

+0

Esto funciona como un amuleto, gracias. – Dziamid

1

No he probado esto, pero usted podría intentar:

$("<form/>").html($('#embedded').clone()).serialize() 
+0

Intenté esto inicialmente, pero las áreas de texto no se serializarían correctamente. – Dziamid

Cuestiones relacionadas