如何在javascript中取消控件的onblur事件?

时间:2010-09-15 10:25:59

标签: javascript javascript-events

我正在将焦点转移到下拉列表onblur事件的控件上,焦点转移到所需的控件,并且为该控件编写的onblur事件正在执行,我不知道我想要。我该如何防止这种情况发生?

感谢
基肖尔马布

1 个答案:

答案 0 :(得分:2)

如果在焦点已设置的情况下设置焦点,则可以预期会触发各种奇怪的事件。该问题并非特定于Javascript;它发生在我曾经使用的每个GUI上。您无法可靠地停止触发事件,如果您尝试使用其他浏览器或在其他操作系统上运行,则可能无法以相同的顺序获取相同的事件。

我总是使用布尔变量作为标志来注意我是否在自己设置焦点的中间,并在设置该标志时从onblur()等静静地返回。像

这样的东西
var isFocusGettingMessedWith;
...
isFocusGettingMessedWith = true;
someControl.focus();
isFocusGettingMessedWith = false;
...
function someControl_onblur(event) {
    if (!isFocusGettingMessedWith) { /* do something */ }
}
function otherControl_onblur(event) {
    if (!isFocusGettingMessedWith) { /* do something */ }
}

这种方法在我有理由使用它的每种语言/平台组合上都可靠地运行。