有没有办法防止元素在JavaScript / jQuery中失去焦点?

时间:2013-02-09 07:47:27

标签: javascript jquery javascript-events

只有在元素失去焦点后才会触发focusout / blur事件... 顺便说一句,我更喜欢不使用插件来做到这一点。 谢谢!

2 个答案:

答案 0 :(得分:4)

呀。你可以用这个:

<input type="text" onblur="this.focus();" />

或者在jQuery中:

$(element).blur(function(){
    $(this).focus();
});

答案 1 :(得分:2)

单击可聚焦DOM元素(默认情况下可聚焦,或通过向其添加tabIndex属性使其可聚焦),它将首先收到"focus"事件,让您知道它& #39;即将获得焦点。

然而,在此之前,无论有什么焦点都会收到类型为"focusout"的{​​{1}}事件。假设您的事件变量为FocusEvente属性将填充即将获得焦点的元素。如果您通过将焦点设置回失去焦点e.relatedTarget的事物来处理"focusout"事件,那么它会立即重新获得焦点以及e.target"focus"事件,而将要获得焦点的对象既不会获得焦点也不会获得任何焦点事件。

因此,处理"focusin"事件是阻止对象丢失焦点的最佳方法。从技术上讲,因为事件不是"focusout",你不能阻止它失去焦点,但你可以强制它立即重新获得焦点,从而防止焦点被转移到另一个元素。

同时,如果您的目的是阻止某个对象接收焦点,那么您最好的选择是通过调用cancelable处理其"focus"事件在元素上,所以它永远不会收到焦点,也不会收到blur事件。