如果未提交表单,则触发onb​​eforeunload

pin*_*ngu 4 javascript jquery onbeforeload

我有一个表单,通过PHP提交3个提交操作:

  • 保存并继续
  • 保存并退出
  • 退出而不保存

我想触发一个"OnBeforeUnload"警报,以显示用户是否未点击任何表单操作以通知他们他们正在离开页面,并且他们的更改可能无法保存.

我尝试了以下代码,但似乎在我的点击事件之前触发了unbeforeunload.有关如何最好地实现这一点的任何建议?

$buttonpressed = false;
$j(".Actions input").click(function(){
    $buttonpressed = true;                                  
});

if(!$buttonpressed){
    window.onbeforeunload = function(){
        return "Your changes may not be saved.";
    }
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 18

你需要做的检查内部处理程序,如下所示:

window.onbeforeunload = function(){
    if(!$buttonpressed){
        return "Your changes may not be saved.";
    }
}
Run Code Online (Sandbox Code Playgroud)

目前,它的绑定window.onbeforeunload,当你的代码,因为运行$buttonpressedfalse它运行的时候......不,如果它后来改变了,因为你已经绑定的处理程序无关紧要.另一种方法是使它更简单,如下所示:

window.onbeforeunload = function(){
    return "Your changes may not be saved.";
}
$j(".Actions input").click(function(){
    window.onbeforeunload = null;
});
Run Code Online (Sandbox Code Playgroud)

这只是删除了处理程序click.处理其他提交案例的更合适的事件是附加到submit事件,如下所示:

$j(".myForm").submit(function(){
    window.onbeforeunload = null;
});
Run Code Online (Sandbox Code Playgroud)

  • 最后一个选项对我不起作用,在提交事件之前调用onbeforeunload.使用提交按钮上的onClick和变量修复它.谢谢! (2认同)