【发布时间】:2011-08-14 15:45:27
【问题描述】:
我有一个包含多个表单的页面。 我正在尝试提交其中一个表单(比如表单 A)(不是通过 Ajax,因为我需要在处理提交后加载结果页面),但是我需要另一个表单的内容(比如表单 B)与一起提交表单 A,即表单 A + B 的内容应该作为一个请求一起提交到同一个 URL,并且如我之前所说,而不是作为 Ajax 请求。
提交应通过 POST 请求。此外,表单仅包含不是文件上传的字段(即输入、选择、文本区域字段)。
我在这里看到了一些建议,例如
Posting/submitting multiple forms in jQuery
或
Submitting two forms with a single button
但请注意,这些与我的情况不符,因为表单是在不同的请求中提交的,和/或它们是通过 Ajax 提交的。
我正在考虑通过(jQuery 的)serialize() 获取其中一个表单的内容,但是如何将该字符串附加到通过 POST 提交的表单?
或者您可能有其他想法如何做到这一点?
解决方案:
基于Sheepy和YoTsumi的思路,我写了如下代码。我也在使用 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();
}
【问题讨论】:
标签: javascript jquery