我正在将焦点转移到下拉列表onblur
事件的控件上,焦点转移到所需的控件,并且为该控件编写的onblur
事件正在执行,我不知道我想要。我该如何防止这种情况发生?
感谢
基肖尔马布
答案 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 */ } }
这种方法在我有理由使用它的每种语言/平台组合上都可靠地运行。