2012-07-07 17 views
8

Ho 4 moduli su una pagina. So che le forme non possono essere annidate.jQuery Multiple Forms Submit

<form id="form1"></form>

<form id="form2"></form>

<form id="form3"></form>

<form id="form4"></form>

presentato in questo ordine.

Il modulo 1 e il modulo 4 vengono inviati alla stessa pagina php per l'elaborazione. Modulo 1 con 1 campo di immissione Modulo 4 con più campi, caselle di controllo e selezioni.

Qual è l'approccio migliore per entrambi i moduli 1 o 4 che inviano i campi combinati di entrambe le forme?

Ho provato jQuery, funziona perfettamente per l'immissione di testo e la casella di controllo, ma non riesco a farlo funzionare con Seleziona. Provato combinando il modulo 1 e il modulo 4 e utilizzando css per riposizionare il modulo 1, ma non è possibile ottenere il layout corretto.

C'è qualcosa di più semplice da fare?

risposta

10

Non è possibile. È possibile utilizzare serialize() o serializeArray() metodo per ottenere i dati dei moduli e li inviare al server utilizzando Ajax:

codificare un insieme di elementi del modulo come una stringa per la presentazione.

$('#send').click(function() { 
    var firstFormData = $('form:eq(0)').serializeArray(); 
    var fourthFormData = $('form:eq(3)').serializeArray(); 
    $.ajax({ 
     url : '...', 
     type : 'post', 
     data : firstFormData.concat(fourthFormData) 
    }).done(function() { 
     // ... 
    }); 
}); 
+2

Mi hai battuto. Ho il mio signore onorevole. – Ruel

+1

@undefined ++ 1 bazinga! –

+0

@undefined Grazie, effettivamente .serialize è la prima cosa che ho provato. Non sembra catturare l'array checkbox.Poi ho provato: $ ('# form4: input'). Not (': submit'). Clone(). Hide(). AppendTo ('# form1'); Funziona alla grande con tutti gli input ma non con i tag