2011-12-13 12 views
5

Ho una forma che incorpora un'altra forma:serializzazione di un sottoinsieme di 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> 

Ho bisogno di serializzare solo la forma incorporato.

$('#embedded').serialize() produce una stringa vuota.

risposta

6

Non si incorpora un altro modulo, si incorpora un div.

Il metodo serialize() può essere chiamato solo sugli elementi form o sull'elemento form stesso.

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

Procedimento .serialize() può agire su un oggetto jQuery che ha selezionato i singoli elementi del modulo, come <input>, <textarea> e <select>. Tuttavia, è in genere più facile selezionare il tag <form> in sé per la serializzazione:

+2

ne dite '$ ('# embedded'). find (': input'). serizalise() '? – Dziamid

+0

@Dziamid: Sarebbe meglio. Ho dimenticato che esisteva. Risposta aggiornata – Matt

+0

Funziona come un incantesimo, grazie. – Dziamid

1

non ho ancora testato, ma si potrebbe provare:

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

Inizialmente l'ho provato, ma le textareas non venivano serializzate correttamente. – Dziamid

Problemi correlati