只有在元素失去焦点后才会触发 focusout/blur 事件......顺便说一下,我更喜欢不使用插件来做到这一点。
问问题
5954 次
2 回答
4
是的。你可以使用这个:
<input type="text" onblur="this.focus();" />
或者在 jQuery 中:
$(element).blur(function(){
$(this).focus();
});
于 2013-02-09T07:51:53.487 回答
3
是的。
当您单击可聚焦的 DOM 元素(默认情况下可聚焦,或通过向其添加tabIndex
属性使其可聚焦)时,它将首先收到一个"focus"
事件,让您知道它即将获得焦点。
然而,在此之前,任何有焦点的东西都会收到一个"focusout"
类型为 的事件FocusEvent
。假设您的事件变量是e
. 该e.relatedTarget
属性将填充即将获得焦点的元素。如果您"focusout"
通过将焦点设置回失去焦点的事物来处理事件e.target
,那么它将立即重新接收焦点以及一个"focus"
和"focusin"
事件,而将要接收焦点的对象既不会接收焦点,也不会接收焦点任何焦点事件。
因此,处理"focusout"
事件是防止对象失去焦点的最佳方法。从技术上讲,因为事件不是cancelable
,你无法阻止它失去焦点,但你可以强制它立即重新接收焦点,从而防止焦点转移到另一个元素。
同时,如果你的意图是阻止一个对象接收焦点,那么你最好的办法是"focus"
通过调用blur
元素来处理它的事件,这样它就不会接收焦点也不会接收"focusin"
事件。
于 2017-02-03T20:05:44.933 回答