8

如果用户尝试在不提交表单的情况下重定向到另一个页面,我正在使用以下 JavaScript 代码警告用户。

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

这工作正常。但我的问题是当用户尝试使用提交按钮提交表单时,会出现确认框。如果用户提交表单,我不想询问确认,否则我想询问确认。这怎么可能?

4

2 回答 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?';
};

PS:交叉检查跨浏览器的 onbeforunload 兼容性。

于 2013-01-31T11:41:36.987 回答
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?';
};
于 2013-01-31T11:43:19.793 回答