2012-03-06 10 views
29

non ho trovato una risposta concreta sul fatto che questo è possibile, ma sembra come dovrebbe essere ...jQuery serializzare/serializeArray da un elemento che non è una forma

vorrei serializzare tutto gli elementi di input contenuti in un div. Non riesco a utilizzare un modulo, perché sarebbe annidato in un'altra forma. Vorrei quindi ottenere i valori e pubblicarli tramite Ajax.

Ecco l'esempio jsFiddle sto giocando con:

http://jsfiddle.net/9uyz5/

Se cambio la radice ad un funziona come previsto.

Grazie per il vostro aiuto.

Ho modificato il jsfiddle da quest'altra domanda:

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

+0

Ho scritto una risposta al blog alla tua domanda. Ecco come serializzare gli elementi dom. Ho anche parlato della possibilità di creare una stringa JSON da inserire nel database: http://onwebdev.blogspot.com/2012/03/jquery-serialize-elements-outside-forms.html –

+0

Possibile duplicato di [jquery per serializzare solo elementi all'interno di un div] (http://stackoverflow.com/questions/1829519/jquery-to-serialize-only-elements-within-a-div) – showdev

risposta

49

è necessario serializzare tutti gli ingressi all'interno del contenitore, non il contenitore vero e proprio. così:

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

per curiosità, trovo che questo sia alquanto inaspettato, perché fa $ ('# myForm'). serialize() funziona? –

+3

Un po 'tardi lo so ma, '$ (' # myForm '). Serialize()' funziona perché è progettato per serializzare tutti gli elementi in un modulo ** o ** un array jQuery di elementi di input. [Come dichiarato nella documentazione] (http://api.jquery.com/serialize/) – Liam

3

questo funziona anche con

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

:)

1

per la serializzazione del contenuto del div con un pulsante questo sarà il modo più efficiente in quanto non attraversare attraverso l'intera dom

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

assicurarsi di collegare questo con l'evento tasto e assicurarsi di includere event.preventdefault con il pulsante in modo che esso non presenta la forma primaria se il div è al suo interno.

6

Prova questo, per ottenere tutto.

$('#divID *').serialize() 
Problemi correlati