2011-12-13 11 views
5

mam postać, która osadza inną postać:Szeregowania podzbiór postaci

<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> 

muszę serializacji tylko postać wbudowanego.

$('#embedded').serialize() kończy się pustym łańcuchem.

Odpowiedz

6

Nie umieszczasz innego formularza, umieszczasz go na div.

Metoda serialize() może być wywołana tylko na elementach form lub samym form.

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

Sposób .serialize() może działać na obiekcie jQuery który wybrany poszczególnych elementów postaci, takiej jak <input>, <textarea> i <select>. Jednakże, jest to zazwyczaj łatwiej wybrać sam tag <form> dla serializacji:

+2

Jak o '$ ('# embedded'). find (': input'). serizalise() '? – Dziamid

+0

@Dziamid: Byłoby lepiej. Zapomniałem, że to istnieje. Odpowiedź zaktualizowana. – Matt

+0

Działa to jak wdzięk, dziękuję. – Dziamid

1

nie testowałem, ale można spróbować:

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

Początkowo próbowałem tego, ale tekst nie byłby poprawnie serializowany. – Dziamid