2012-02-14 18 views
35

¿Se pueden serializar varios formularios en uno para que solo se realice una publicación o una solicitud ajax? He buscado y es todo por enviar cada formulario por separado a través de post/ajax.¿Serializar múltiples formularios juntos?

+2

[¿Lo has probado? http://jsfiddle.net/C4pd5/](http://jsfiddle.net/C4pd5/) – Matt

+0

posible duplicación de [Fusionar valores de dos formularios en submit] (http://stackoverflow.com/questions/2341001/merge -values-from-two-forms-on-submit) – Azd325

Respuesta

22

Cuando utiliza la función jQuery serialize(), simplemente convierte su formulario en una cadena con el formato a=1&b=2&c=3. Entonces, ciertamente puede aplicar esta función a dos formas y concatenar el resultado, con un & entre ellas, y usar el resultado en su llamada ajax. Querrá algunas comprobaciones para asegurarse de que ninguna cadena esté vacía cuando realiza la concatenación.

115

Si ejecuta $('form').serialize() en una página con varios formularios, serializará correctamente todos los formularios en una cadena.

para incluir sólo ciertas formas, utilice $('#form1, #form2').serialize()

+0

¡Gracias, gran solución! – di3sel

+1

@ 472084 Intenté ese enfoque '$ ('# form1, # form2'). Serialize()', pero no conseguí que funcionara, solo se publicaría el último formulario. Tuve una gran forma que tuve que dividir en 2, donde la segunda solo aparece después de que la primera valide (es por eso que tuve que dividirla en 2). Por lo tanto, el primer envío no enviará datos, sino que solo validará, mientras que el último serializará ambos formularios y enviará todos los datos. Finalmente tuve que serializar ambas formas por separado y concatenarlas con un '&' para que funcione. ¿Alguna documentación que conozcas podría darme una lectura directa de por qué eso no funcionaría? Seguiré buscando en Google –

+0

Todavía es bueno en 2015 – mko

17

me gusta la respuesta de Jleagle anteriormente.

si son más específica acerca de las formas, utilice

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

la línea de arriba, devolverá un valor de cadena. como customId=08071992&cort=01&empId=7777

que pueda evitar los campos deseados añadiendo el atributo disabled="disabled" a los campos de entrada

+1

Gracias por señalar que 'entrada [deshabilitada]' no están incluidas en '$(). serialize()'. – Gideon

Cuestiones relacionadas