0

我有两种形式。一个在模式弹出窗口中,一个在下面的页面中。我想使用以下代码同时提交它们:

$('.window .submitlink').click(function (e) {
    $('#form2').submit();                            
    $('#form1').submit();
});

但是存在一个问题,那就是:它不处理action中的页面form2,而只是处理action中的action form1

顺便说一句,我在 wordpress 中这样做。有任何想法吗?

4

2 回答 2

0

您需要使用每个表单的内容动态创建帖子。首先,您需要参数化表单,然后通过 $.post 或 $.ajax 发布该数据

例如:var 数据 = {};

$('#form1 input').each(function () {
    data[$(this).attr('name')] = $(this).val();
}

$('#form2 input').each(function () {
    data[$(this).attr('name')] = $(this).val();
}
$.post('mytarget/address/topost/to', data);

这假设您要发布到同一个地方。如果没有,您将不得不使用单独的 $.post 语句。

于 2011-12-09T20:54:58.257 回答
0

HTML 表单的默认行为(您使用 触发的.submit()是在初始操作完成后立即跟随表单的操作。要覆盖它,您必须采取措施使其按预期工作,做一个在其他之后提交。

您当前流程的挑战是,如果提交失败,您不允许任何反馈。提交没有产生任何指示,允许视图通知用户存在问题,也没有任何东西可以防止第二个在第一个失败时盲目提交。

您可以尝试两种方法来实现这一点:

  1. 结合表格。但是,这可能与您的代码设计背道而驰
  2. Nest Ajax 提交。这允许您获得对视图的动态“反馈”,并根据第一次提交的成功开始/停止第二次提交,而没有覆盖数字 2 的默认操作。

一些考虑:

  • 如果您在表单中使用按钮,它将默认提交表单,除非您执行“覆盖默认值”
  • 如果您使用 ajax 路线,请.serialize()在您的表单上使用来获取值,而无需通过 id 指定它们
于 2011-12-09T20:57:26.630 回答