2013-07-22 70 views
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中沒有數據,它仍會提示。我在這裏做錯了什麼?onbeforeunload功能不能正常工作

+0

'a.val()'也許取而代之? – Omar

+0

因爲我使用JavaScript方法,它沒有方法.val() – EasyBB

回答

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

+1

AHHA哇,我看了一下這麼小!謝謝克里斯託弗! – EasyBB