2012-09-19 45 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从未失败!

相关问题