我有一个包含多个表单的页面。
我正在尝试提交其中一个表单(比如表单 A)(不是通过 Ajax,因为我需要在提交处理后加载结果页面),但是我需要另一个表单的内容(比如表单 B)与表单 A 一起提交,也就是将表单 A和B的内容一起作为一个请求提交到相同的URL,且如前所述,不作为Ajax请求。
提交应该是POST请求。而且,表单仅包含非文件上传字段(即input、select、textarea字段)。
我看到了一些建议,例如:
Posting/submitting multiple forms in jQuery
或
Submitting two forms with a single button
但请注意,这些与我的情况不符,因为表单是在不同的请求中提交的,或者它们是通过 Ajax 提交的。
我想通过 (jQuery 的) serialize() 获取一个表单的内容,但如何将该字符串附加到由POST提交的表单?
或者您有其他想法来完成这个任务吗?
解决方案: 根据Sheepy的想法,我编写了以下代码。我还使用了来自以下链接的Pointy的答案: submit multiple forms to same page
解决方案: 根据Sheepy的想法,我编写了以下代码。我还使用了来自以下链接的Pointy的答案: submit multiple forms to same page
//Arguments: "name"s of forms to submit.
//First argument: the form which according to its "action" all other forms will be submitted.
//Example: mergeForms("form1","form2","form3","form4")
function mergeForms() {
var forms = [];
$.each($.makeArray(arguments), function(index, value) {
forms[index] = document.forms[value];
});
var targetForm = forms[0];
$.each(forms, function(i, f) {
if (i != 0) {
$(f).find('input, select, textarea')
.hide()
.appendTo($(targetForm));
}
});
$(targetForm).submit();
}
serializeArray
也尊重禁用属性,因此您需要在代码之前启用它们,并在之后重新禁用它们。 - Sheepy