不要询问用户提交表单

8
我正在使用以下JavaScript代码,如果用户尝试在提交表单之前重定向到另一个页面,它将发出警告。
window.onbeforeunload = function() {
   return 'Are you sure that you want to leave this page?';
};

这个功能已经正常运作。但我的问题是当用户尝试使用提交按钮提交表单时,会出现确认框。 如果用户提交表单时不想要确认框,否则我想要确认框。这有可能吗?


1
请检查 onbeforeunload。我认为它在Chrome或Firefox中都不起作用。 - Ashwin
我发现在Chrome和Firefox上都能正常工作。但是它们的响应方式不同。在我的情况下,Firefox会询问: “此页面正在要求您确认是否要离开 - 您输入的数据可能无法保存。” 但是Chrome会询问确认: “您确定要离开此页面吗? 您确定要离开此页面吗?” - shihabudheen
2个回答

10

维护一个状态变量。当用户点击提交按钮时,将状态设为userSubmitted=True
状态变量可以包括全局变量或隐藏控件。

var userSubmitted=false;

$('form').submit(function() {
userSubmitted = true;
});

那么就像这样检查

window.onbeforeunload = function() {
    if(!userSubmitted)
        return 'Are you sure that you want to leave this page?';
};

注意:为了跨浏览器兼容性,请交叉检查onbeforunload的兼容性。


2

简单。

只需拥有全局变量即可。

var can_leave = false;

在您的表单中:

$('form').submit(function() {
...
...
can_leave = true;
});

在你的onbeforeunload()处理程序中加入以下代码:

window.onbeforeunload = function() {
if (!can_leave)   return 'Are you sure that you want to leave this page?';
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接