我有一个文本字段,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)
}
非常感谢任何帮助。
答案 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从未失败过!