focusout/blur事件仅在元素失去焦点后触发...顺便说一句,我更喜欢在不使用插件的情况下这样做。
发布于 2013-02-09 15:51:53
嗯。您可以使用以下命令:
<input type="text" onblur="this.focus();" />或者在jQuery中:
$(element).blur(function(){
$(this).focus();
});发布于 2017-02-04 04:05:45
是。
当您单击一个可聚焦的DOM元素(默认情况下是可聚焦的,或者通过向其添加tabIndex属性使其可聚焦)时,它将首先接收一个"focus"事件,让您知道它即将接收焦点。
然而,在此之前,任何具有焦点的对象都将接收类型为FocusEvent的"focusout"事件。假设您的事件变量为e。将使用将要接收焦点的元素填充e.relatedTarget属性。如果您通过将焦点设置回失去焦点e.target的对象来处理"focusout"事件,那么它将立即重新接收焦点,以及"focus"和"focusin"事件,而将要接收焦点的对象将不会接收焦点或任何焦点事件。
因此,处理"focusout"事件是防止对象失去焦点的最佳方法。从技术上讲,因为事件不是cancelable,所以您无法阻止它丢失焦点,但您可以强制它立即重新接收焦点,从而防止焦点被转移到另一个元素。
同时,如果您的意图是阻止对象接收焦点,那么最好的方法是通过在元素上调用blur来处理其"focus"事件,这样它既不会接收焦点,也不会接收"focusin"事件。
https://stackoverflow.com/questions/14786060
复制相似问题