我有一个表单,通过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.";
}
}
答案 0 :(得分:18)
您需要在处理程序中执行检查,如下所示:
window.onbeforeunload = function(){
if(!$buttonpressed){
return "Your changes may not be saved.";
}
}
当你的代码运行时它正在绑定window.onbeforeunload
,因为$buttonpressed
在运行时是false
...如果稍后因为你已经绑定了处理程序而改变它并不重要。另一种方法是使其更简单,如下所示:
window.onbeforeunload = function(){
return "Your changes may not be saved.";
}
$j(".Actions input").click(function(){
window.onbeforeunload = null;
});
这只会删除click
上的处理程序。处理其他提交案例的更合适的事件是附加到submit
事件,如下所示:
$j(".myForm").submit(function(){
window.onbeforeunload = null;
});