2012-02-14 32 views
35

您可以将多个表单序列化为一个,以便只发布一个帖子或ajax请求?我已经搜索过,并且都是通过post/ajax分隔提交每个表单。将多个表单串联在一起?

+2

[你有没有尝试过避免不必要的字段? http://jsfiddle.net/C4pd5/](http://jsfiddle.net/C4pd5/) – Matt 2012-02-14 16:51:08

+0

可能重复[合并值从两个表单提交](http://stackoverflow.com/questions/2341001/merge -values-from-two-forms-on-submit) – Azd325 2014-02-12 11:16:00

回答

22

当您使用jQuery serialize()函数时,它只是将格式转换为a=1&b=2&c=3格式的字符串。所以你当然可以将这个函数应用于两种形式,并将结果连接起来,在它们之间使用&,并在你的ajax调用中使用结果。您需要进行一些检查,以确保在进行连接时两个字符串都不为空。

115

如果多种形式的网页上运行$('form').serialize(),它会正确地序列所有的形式成一个字符串。

要只包括某些形式,使用$('#form1, #form2').serialize()

+0

谢谢,真棒解决方案! – di3sel 2013-12-12 08:07:34

+1

@ 472084我试过'$('#form1,#form2')。serialize()'方法,但没有得到它的工作,只有最后的形式才会被发布。我必须将其分成2个,第二个只在第一个验证后出现(这就是为什么我必须将它分成2个)。因此,第一次提交不会提交数据,但只是验证,而最后一次提交将两个表单序列化并提交所有数据。我最终不得不分别序列化两个表单,并用'&'连接它们以使其工作。你知道的任何文件都可以直接阅读为什么会失败?我会继续使用搜索网络 – 2014-02-19 00:06:05

+0

2015年还不错 – mko 2015-02-25 10:40:34

17

我想从上面Jleagle答案。

,如果你是更具体的有关表格,使用

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

上述行会返回一个字符串值。像customId=08071992&cort=01&empId=7777

您可以通过添加属性disabled="disabled"到输入字段

+1

感谢您指出'input [disabled]'不包含在'$()。serialize()'中。 – Gideon 2016-07-01 02:49:31

相关问题