JavaScript/jQuery如何检测输入框是否获得焦点?

149

如何检测在


9
这并不是重复的问题,因为另一个问题明确要求使用jQuery解决方案。 - john-jones
我同意。不知道原帖作者以前是否使用过jQuery... - trysis
@HermannIngjaldsson 因此,由于提供的代码使用了jQuery(就像最初发布时一样),它隐含地也是一个重复。因此,它确实是一个重复。 - robinCTS
4个回答

374

使用纯JavaScript:

this === document.activeElement // where 'this' is a dom object

或使用jQuery的:focus伪选择器。

$(this).is(':focus');

2
我不知道为什么它不起作用......没有一个......如果它没有焦点,它会触发第一步......但它应该触发另一个步骤...... - southpaw93
5
请注意,使用“focus()”设置焦点将不起作用,如果节点未附加到DOM或被隐藏(例如,display:none;)。 - B T
39
谢谢您没有提供jQuery的解决方案。特别是因为纯JS的解决方案也更加简短。脱帽致敬 - Mathias
11
@Mathias - 你可能是在指涉某种模糊的“更短”的定义... - katzenhut
12
@katzenhut 哈,是的...不确定我当时想说什么(指2014年)。我猜我是想说“更短”,意思是不会调用一堆库代码?! - Mathias
显示剩余3条评论

1
如果您可以使用JQuery,那么使用JQuery :focus selector就可以满足需求。
$(this).is(':focus');

0

使用jQuery的.is(":focus")

$(".status").on("click","textarea",function(){
        if ($(this).is( ":focus" )) {
            // fire this step
        }else{
                    $(this).focus();
            // fire this step
    }

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接