假设有一个单一输入的文档。我想要做的就是这么简单:
$("input").focus().is(":focus");
我希望上面的代码返回true
。相反,firebug会记录错误:
Syntax error, unrecognized expression: Syntax error, unrecognized expression: focus
我在这里缺少什么?我假设is()
使用的语法与$()
相同,或者我不能这样做?
如果这是不可修复的,您会建议如何检查焦点输入?
修改
从jquery 1.6开始,:focus
选择器是jquery核心的一部分:http://api.jquery.com/focus-selector/
如果您需要,只需升级即可。
答案 0 :(得分:5)
您可以使用document.activeElement
测试它是否是活动(聚焦)元素,如下所示:
if($("input")[0] == document.activeElement) {
//first input is focused
}
You can give it a try here。请注意,尽管大多数情况下您的操作是在另一个元素上触发的,但是如果您单击一个按钮然后它将具有焦点并且现在是活动元素,因此您无法使用按钮检查,因为在大多数情况下,在事件触发时元素已经更改。
答案 1 :(得分:4)
$("input").focus()
应该足够了。由于:focus
不是选择器。
$("input").focus(function () {
//do something
});
编辑:
$("input:focus").runFunc();
我认为可能有效。我认为Cletus总结了这个问题,值得一看。
答案 2 :(得分:2)
将此添加到您的代码中它将起作用:
jQuery.expr[':'].focus = function( elem ) {
return elem === document.activeElement && ( elem.type || elem.href );
};
答案 3 :(得分:1)
您可以使用jQuery .data()函数来执行此类操作。
$('input').focus(function () {
$(this).data('focus', true); // set focus to true (on focus)
});
$('input').blur(function () {
$(this).data('focus', false); // set focus to false (on blur)
});
然后检查焦点使用$('#element-id').data('focus')
。如果将其设置为true,则元素具有焦点。
答案 4 :(得分:0)
做这样的事情:
$('input').focus(function(){$(this).addClass('focus')});
然后你可以检查一个元素是否具有这样的焦点:
$('input').hasClass('focus'); // this will return true or false
答案 5 :(得分:0)
如果您想检查输入是否有焦点,可以使用:
$('input:focus') //returns the focused element, assuming it's an input element...
$('[selector]:focus').length == 0 //check if a selected element has focus...