当窗口关闭时,JavaScript会阻止函数触发

时间:2012-09-19 19:32:51

标签: javascript onbeforeunload onunload

我有一个文本字段,ID =“Text1”,当Text1字段失去焦点时触发一个函数“validateField()”(它还检查输入键是否被按下“onkeydown”)

示例:

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

问题是,当用户关闭窗口时,此事件会触发,我想阻止这种情况发生。

我试图在validatField函数中使用window.onbeforeunload和window.onunload:

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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所示。它还会阻止输入密钥提交表单。我检测到回车键并用Tab键替换键码。我尝试将超时设置为低于100且有零星问题,但100从未失败过!