2012-09-19 44 views
2

當Text1字段失去焦點時,我有一個文本字段,ID =「Text1」,它觸發一個函數,「validateField()」(它也檢查是否按下了回車鍵「的onkeydown」)當窗口關閉時,JavaScript阻止函數被觸發

例如:

<input type=text ID="Text1" onkeydown="wasEnterKey(); " onblur="validateField()" > 

的問題是,當用戶關閉窗口,此事件觸發,我想避免這種情況發生。

我曾嘗試使用window.onbeforeunload和window.onunload在validatField功能:

function validateField() 
{ 
if (window.onbeforeunload) { 
    window.open('','_parent','');window.close(); return false; 
          } 
... (other actions follow) 
} 

任何幫助將不勝感激。

+0

'window.onbeforeunload'是一個事件處理程序。您可以爲其分配一個您希望在頁面卸載之前執行的功能;你無法按照自己認爲的方式檢查你是否正在卸貨。 – lanzz

+0

爲了避免事件發生,請嘗試window.onbeforeunload = null –

+2

一種方法可能是使用setTimeout稍後執行回調,以便在關閉窗口時不會運行。不是超級乾淨。我想知道是否有更好的方法。 – 3on

回答

1

感謝:@ 3on和@Champ!

這是我制定的解決方案,認爲實際的代碼可能對某人有幫助。再次感謝!

<SCRIPT LANGUAGE="JavaScript"> 
function delayBlur() 
{ setTimeout(validatePwd, 100); } 

function closenow() 
    { window.open('','_parent','');window.close(); return false; } 

function validateField() 
{ 
    var field1 = document.myForm.Text1.value; 
    if (Text1 == '') 
    {... (other actions follow)} 
} 
</SCRIPT> 
<input type=Text ID="Text1" onkeydown="wasEnterKey(); " onblur="delayBlur()"> 

這允許窗口在用戶單擊關閉按鈕時關閉,如3on和Champ建議的那樣。它也阻止了輸入鍵提交表單。我檢測到輸入鍵並用一個製表鍵替換鍵碼。我嘗試將超時設置爲低於100,並有零星的問題,但100從未失敗!

相關問題