用户试图离开页面而不保存时的JavaScript警报

用户试图离开页面而不保存时的JavaScript警报,javascript,Javascript,按照问题和答案 来自MarkR的解决方案 <script language="JavaScript"> window.onbeforeunload = confirmExit; function confirmExit() { return "Please click Update. Unsaved changes will be lost."; } </script> window.onbeforeunload=确认退出; 函

按照问题和答案 来自MarkR的解决方案

<script language="JavaScript">
    window.onbeforeunload = confirmExit;
    function confirmExit() {
        return "Please click Update. Unsaved changes will be lost.";
    }
</script>

window.onbeforeunload=确认退出;
函数confirmExit(){
return“请单击“更新”。未保存的更改将丢失。”;
}
工作正常-除了它要求我确认,即使我点击“提交”按钮。我明白为什么。但我的问题是,如果使用提交按钮,如何跳过代码的执行?
谢谢。

当用户提交表单时,在卸载之前删除
处理程序

document.getElementById("formid").addEventListener("submit", function() {
    window.onbeforeunload = null;
});

我建议将附加值
submitted
设置为
true
,以防用户按下“Submit”,但当用户更改页面上的任何输入时,该值将重置为
false
。这实际上取决于您正在开发的应用程序的类型

我假设您有不同类型的
输入
字段,我会这样做

$('input').change(function(e) {
    window.submitted = false;
})
然后检查
窗口。在
confirmExit
函数中提交的值