0
 $(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 中没有数据,它仍然会被提示。我在这里做错了吗?

4

1 回答 1

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

于 2013-07-22T23:04:00.530 回答