首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法防止JavaScript/jQuery中的元素失去焦点?

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

Stack Overflow用户
提问于 2013-02-09 15:47:27
回答 2查看 5.8K关注 0票数 3

focusout/blur事件仅在元素失去焦点后触发...顺便说一句,我更喜欢在不使用插件的情况下这样做。

EN

回答 2

Stack Overflow用户

发布于 2013-02-09 15:51:53

嗯。您可以使用以下命令:

代码语言:javascript
复制
<input type="text" onblur="this.focus();" />

或者在jQuery中:

代码语言:javascript
复制
$(element).blur(function(){
    $(this).focus();
});
票数 4
EN

Stack Overflow用户

发布于 2017-02-04 04:05:45

是。

当您单击一个可聚焦的DOM元素(默认情况下是可聚焦的,或者通过向其添加tabIndex属性使其可聚焦)时,它将首先接收一个"focus"事件,让您知道它即将接收焦点。

然而,在此之前,任何具有焦点的对象都将接收类型为FocusEvent的"focusout"事件。假设您的事件变量为e。将使用将要接收焦点的元素填充e.relatedTarget属性。如果您通过将焦点设置回失去焦点e.target的对象来处理"focusout"事件,那么它将立即重新接收焦点,以及"focus"和"focusin"事件,而将要接收焦点的对象将不会接收焦点或任何焦点事件。

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

同时,如果您的意图是阻止对象接收焦点,那么最好的方法是通过在元素上调用blur来处理其"focus"事件,这样它既不会接收焦点,也不会接收"focusin"事件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14786060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档