当我在我的(JavaScript)处理程序中接收到一个onBlur
事件时,我想知道onFocus
事件是什么(如果有的话)。
例如:我有一组文本框组成一个组。只有当整个组失去焦点时,我才想通知订阅者组onBlur
事件。因此,如果onBlur
事件发生,我只想在注意到它后面没有组中另一个文本框的onFocus
事件时转发它。
我现在通过延迟来执行此操作,并查看是否同时发生了焦点事件。但我不太喜欢这个解决方案,因为:由于延迟,模糊出现在聚焦之后,并且包含在延迟模糊中的事件是“旧的”,这在进一步处理中可能是棘手的。
我的想法是:在“事件队列”中查找,当我接收到模糊事件时,检测任何将跟随的onFocus
事件,但我不知道这是否可能以及如何做到这一点。
3条答案
按热度按时间iszxjhcz1#
看过你的问题后,我不太清楚你在问什么,所以我不确定我贴的是否合适。不管怎样,我把它留在这里考虑。
你可以用一个map和'this'变量来完成这件事:
但更进一步说,假设一次只能聚焦一个文本框,您可以只使用一个名为
lastFocus
的变量,并检查该对象是否等于您想要的对象。chhkpiq42#
焦点和模糊事件应该被添加到事件队列中,因此简单的1-100毫秒setTimeout可能就可以完成这个任务。
我知道您没有使用jQuery --但我可以轻松地编写一个使用它的示例:
我刚刚在firefox上测试了它的1 ms,我很确定其他浏览器的计时也会很好,因为事件处理的方式,blur先触发,然后焦点,然后计时器。
如果你真的想确保
this
在你的事件处理器变成的事件中存在:fkaflof63#
可以对blur and focus使用委托方法
因此,您将检查聚焦的内容。