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

このコードは、データがあるかどうかを確認し、aonbeforeunload がある場合は警告を表示する必要があります。テキストエリアにデータがなくてもプロンプトが表示されることを除いて機能します。ここで何か間違ったことをしていますか?

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

以前はこれに気づきませんでしたが、最初にページを開いたときにテキストエリアが空になるため、割り当てが行われないため、ページの読み込み時にのみメッセージが呼び出されます。

jsフィドル

于 2013-07-22T23:04:00.530 に答える