【问题标题】:Preventing one form submission, and submitting another - is this approach reliable?防止一个表单提交,并提交另一个 - 这种方法可靠吗?
【发布时间】:2010-11-16 11:24:05
【问题描述】:

在一个表单的提交事件处理程序中,提交另一个表单并返回 false 以防止提交第一个表单是否安全?

$("#form1").submit(function() {
    $("#form2").submit();
    return false;
});

我正在使用这种方法,并且它有效(至少在 IE6 中)。但是,我担心这可能不适用于其他浏览器。对submit 的调用能否以某种方式取消return false

我正在考虑的替代方法是

$("#form1").submit(function() {
    setTimeout('$("#form2").submit();', 10);
    return false;
});

....但这很可能会增加实际上不需要的复杂性。

需要这样做的原因是用户正在提交form1,但在某些情况下(我可以使用 JavaScript 检测到)这会导致错误,可以通过在一个中设置一些数据来纠正错误form2 的字段,然后提交此表单。

【问题讨论】:

  • 如果禁用 Javascript 会怎样?
  • 如果 JavaScript 被禁用,那么用户无论如何都不能使用这个网站。

标签: jquery forms submit form-submit


【解决方案1】:

您的代码应该适用于所有浏览器,但如果您想绝对确定您可以这样做

$("#form1").submit(function(evt) {
    evt.preventDefault(); // cancel the default behavior
    $("#form2").submit();
    return false;
});

使用.preventDefault() 方法可确保您取消默认行为之前做一些可能会干扰它..

【讨论】:

  • return false 导致 jQuery 执行 .preventDefault() 部分。
  • @elusive,我知道。但是 OP 担心如果在return false 之前提交,可能会以某种方式干扰它。它可以,但我只是指出一个可以让这种担心放心的替代方案(我希望
【解决方案2】:

您的原始方法应该适用于任何地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2022-08-17
    • 2018-04-02
    • 2014-09-04
    • 2023-04-06
    • 2021-10-15
    • 2016-03-21
    相关资源
    最近更新 更多