onbeforeunload功能无法正常工作

时间:2013-07-22 22:50:16

标签: javascript jquery onbeforeunload

 $(function(){
   var a=document.getElementById('text_editor_textarea'),regEx=/^\s*$/,
 updateOrig = function() {
       var sc = $(a).data('sceditor');
         if(sc){
         sc.bind('keypress', sc.updateOriginal);
         sc.blur(sc.updateOriginal);
   }else {
     setTimeout(updateOrig , 200);
   }
 };
 updateOrig();  
 if(a.value !== "" && regEx.test(a.value) ){
       window.onbeforeunload = function(){
         return "You have a post waiting to be submitted";
      };
  }
});

此代码应检查a中是否有数据,如果有onbeforeunload,则应提示警报。它的工作原理除外,即使textarea中没有数据,它仍然会被提示。我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

只需在此a.value !== ""块内a.value !== null || a.value !== ""代替if

if (a.value !== null || a.value !== "") {
    window.onbeforeunload = function () {
        return "You have a post waiting to be submitted";
    };
}

另外,将if和事件函数赋值转换为:

window.onbeforeunload = function () {
    if (a.value !== "") {
        return "You have a post waiting to be submitted";
    }
};

我以前没有意识到这一点,但只有在页面加载时才会调用你的消息,否则分配就不会发生,因为当你第一次打开页面时textarea会为空。

jsFiddle