问题是当我使用window.onbeforeunload时。当我点击提交按钮时,弹出窗口显示。但我只需要在后退按钮或刷新完成时。我认为我们得到了正确的事件。因此,每当卸载调用时,我只想测试事件是否来自onsubmit。如果是,我们不会给出弹出窗口。所以为此,我需要知道如何检测提交事件。
window.onbeforeunload = function(e) {
if ($('.formFields').find('tr.item').length || $('.formFields').find('tr.section').length) {
var dis = discardWarning();
return dis;
} else {
return;
}
};
var discardWarning = function() {
return "Your current work will be discarded.";
}
答案 0 :(得分:1)
您可以在提交表单并捕获响应时设置标志变量。
/* default */
window.leavingAfterSubmission = false;
$('#your-form').on('submit', function(e) {
window.leavingAfterSubmission = true;
});
然后,您可以在onbeforeunload
事件处理程序上检查此标记。
window.onbeforeunload = function() {
if ( !window.leavingAfterSubmission ) {
// flag is false, meaning the user is leaving by refresh or back button
return discardWarning();
}
// flag is true, meaning the user is leaving by form submission
// empty return to prevent the dialog
return;
};