阻止一个表单提交,然后提交另一个表单 - 这种方法可靠吗?

发布于 2024-10-02 07:33:02 字数 585 浏览 3 评论 0原文

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

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

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

我正在考虑的替代方法是

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

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

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

Is it safe to - within a submit event handler for one form - submit another form and return false to prevent the submission of the first form?

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

I am using this approach, and it works (in IE6 at least). However, I am concerned that this might not work in other browsers. Could the call to submit cancel out the return false somehow?

The alternative approach I was considering is

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

....but this might well be adding complexity where none is actually needed.

The reason for needing to do this is that the user is submitting form1, but in a certain scenario (which I can detect using JavaScript) this is causing a bug, that can be rectified instead by setting some data in one of form2's fields and then submitting this form instead.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

阳光下慵懒的猫 2024-10-09 07:33:02

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

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

使用 .preventDefault() 方法可确保您在执行可能会干扰默认行为的操作之前取消默认行为。

Your code should work across all browsers, but if you want to be absolutely sure you could do

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

Using the .preventDefault() method ensures that you cancel the default behavior before doing something that might interfere with it..

如果没有 2024-10-09 07:33:02

你原来的方法应该在任何地方都适用。

Your original approach should work everywhere.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文