卸货时提醒

时间:2013-08-12 07:41:25

标签: javascript

我需要关闭窗口显示警告框,但在我的代码中每次都会使用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>

2 个答案:

答案 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或仅在需要条件变量时触发。

代码示例:

SCRIPT

   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;
   }

HTML

<form action="test.php" onsubmit="validateForm()">
   <input name="sample" type="submit" value="submit" />
</form>