我需要关闭窗口显示警告框,但在我的代码中每次都会使用onbeforeunload函数询问自动警报框。
<script type="text/javascript">
window.onbeforeunload = function(evt) {
var message = 'Are you sure you want to leave?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
return message;
}
</script>
<form action="test.php">
<input name="sample" type="submit" value="submit" />
</form>
答案 0 :(得分:0)
我想你只愿意一次显示这个消息。全球变量是非常不受欢迎的,但这可以解决问题。
<script type="text/javascript">
var alertWasShown = false;
window.onbeforeunload = function(evt) {
if (alertWasShown)
return;
var message = 'Are you sure you want to leave?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
alertWasShown = true;
return message;
}
</script>
答案 1 :(得分:0)
那是因为您的form
实际上正在离开页面....您需要停止onbeforeunload
或仅在需要条件变量时触发。
代码示例:
var response = true; // true by default
window.onbeforeunload = function(evt) {
if(response){
var message = 'Are you sure you want to leave?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
return message;
}
}
function validateForm(){
// form validation process...
response = false;
}
<form action="test.php" onsubmit="validateForm()">
<input name="sample" type="submit" value="submit" />
</form>