使用jQuery,如何获得具有插入符号(光标)焦点的输入元素?
换句话说,如何确定输入是否具有插入符号的焦点?
使用jQuery,如何获得具有插入符号(光标)焦点的输入元素?
换句话说,如何确定输入是否具有插入符号的焦点?
Answers:
// Get the focused element:
var $focused = $(':focus');
// No jQuery:
var focused = document.activeElement;
// Does the element have focus:
var hasFocus = $('foo').is(':focus');
// No jQuery:
elem === elem.ownerDocument.activeElement;
您应该使用哪一个?引用jQuery文档:
与其他伪类选择器(以“:”开头的选择器)一样,建议在:focus之前添加标签名称或其他选择器;否则,隐含通用选择器(“ *”)。换句话说,裸露
$(':focus')
等于$('*:focus')
。如果您正在寻找当前关注的元素,则$(document.activeElement)将检索它,而不必搜索整个DOM树。
答案是:
document.activeElement
而且,如果您希望使用jQuery对象包装元素:
$(document.activeElement)
$focused
因为我假设您这样做是为了表示var是一个jquery对象。TYVM。
我已经在Firefox,Chrome,IE9和Safari中测试了两种方法。
(1)。$(document.activeElement)
可以在Firefox,Chrome和Safari中正常工作。
(2)。$(':focus')
可以在Firefox和Safari中正常工作。
我进入鼠标输入“名称”,然后按键盘上的Enter键,然后尝试获取焦点元素。
(1)。$(document.activeElement)
返回Firefox,Chrome和Safari中预期的input:text:name,但在IE9中返回input:submit:addPassword
(2)。$(':focus')
在Firefox和Safari中按预期返回input:text:name,但在IE中什么也没有返回
<form action="">
<div id="block-1" class="border">
<h4>block-1</h4>
<input type="text" value="enter name here" name="name"/>
<input type="button" value="Add name" name="addName"/>
</div>
<div id="block-2" class="border">
<h4>block-2</h4>
<input type="text" value="enter password here" name="password"/>
<input type="submit" value="Add password" name="addPassword"/>
</div>
</form>
尝试这个:
$(":focus").each(function() {
alert("Focused Elem_id = "+ this.id );
});
.each
不容忍)
$(':focus')[0]
将为您提供实际的元素。
$(':focus')
会为您提供一系列元素,通常一次只聚焦一个元素,因此,如果您以某种方式聚焦了多个元素,这会更好。
尝试这个::
$(document).on("click",function(){
alert(event.target);
});
如果要确认焦点是否在元素上,则
if ($('#inputId').is(':focus')) {
//your code
}