2012-02-14 16 views
35

Czy można szeregować wiele formularzy w jeden, aby utworzyć tylko jeden wpis lub żądanie ajaxowe? Przeszukałem wszystko i to wszystko za przesyłanie każdej postaci przez pocztę/ajax.Serializuj wiele formularzy jednocześnie?

+2

[Czy próbował? http://jsfiddle.net/C4pd5/](http://jsfiddle.net/C4pd5/) – Matt

+0

możliwy duplikat [Połącz wartości z dwóch formularzy po przesłaniu] (http://stackoverflow.com/questions/2341001/merge -wartość-z-dwóch-formularzy-na-przesyłanie) – Azd325

Odpowiedz

22

Podczas korzystania z funkcji jQuery serialize(), po prostu zamienia formularz na ciąg znaków w formacie a=1&b=2&c=3. Tak więc z całą pewnością można zastosować tę funkcję do dwóch formularzy i połączyć wynik między sobą za pomocą & i wykorzystać wynik w wywołaniu ajax. Pewne by były kontrole, aby upewnić się, że żaden ciąg nie jest pusty podczas łączenia.

115

Po uruchomieniu $('form').serialize() na stronie z wieloma formularzami, będzie poprawnie serializować wszystkie formularze w jeden ciąg.

Aby to tylko niektóre formy, użyj $('#form1, #form2').serialize()

+0

Dzięki, niesamowite rozwiązanie! – di3sel

+1

@ 472084 Próbowałem, że '$ ('# form1, # form2'). Serialize()' podejście, ale nie dostał go do pracy, tylko ostatni formularz zostanie opublikowany. Miałem 1-gigabajtowy formularz, który musiałem rozbić na 2, gdzie drugi pojawia się dopiero po sprawdzeniu 1. (dlatego musiałem rozbić go na 2). Tak więc pierwsze zgłoszenie nie przesłałoby danych, ale tylko sprawdziło, podczas gdy ostatnie zserializowało oba formularze i przesłało wszystkie dane. W końcu musiałem serializować oba formularze osobno i łączyć je z '&', aby działało. Każda dokumentacja, o której wiesz, może dać mi bezpośrednią lekturę, dlaczego to się nie udaje? Będę googlować –

+0

Jeszcze miło w 2015 – mko

17

lubię odpowiedź od Jleagle powyżej.

jeśli są bardziej szczegółowe na temat formy, użyj

$('#detailsform,#levelForm').serialize(); 

Powyższa linia zwróci wartość ciągu. jak customId=08071992&cort=01&empId=7777

można uniknąć niepotrzebnych pól dodając atrybut disabled="disabled" do pól wejściowych

+1

Dziękujemy za zwrócenie uwagi, że 'input [disabled]' nie jest zawarte w '$(). serialize()'. – Gideon

Powiązane problemy