2

我有一个文本字段 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)
}

任何帮助将不胜感激。

4

1 回答 1

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 从未失败过!

于 2012-09-20T22:35:08.530 回答