使用jQuery,我怎么能得到具有插入符号的(光标)焦点输入元素?
或者换句话说,如何确定是否输入有插入符号的重点是什么?
使用jQuery,我怎么能得到具有插入符号的(光标)焦点输入元素?
或者换句话说,如何确定是否输入有插入符号的重点是什么?
// 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的文档 :
作为与其它伪类选择器(那些带有一个begin“:”),建议先于:焦点与标签名称或一些其他选择器; 否则,通用选择(“*”)是隐含的。 换句话说,裸
$(':focus')
等同于$('*:focus')
如果您正在寻找当前所关注的元素,$(document.activeElement)将获取它,而无需搜索整个DOM树。
答案是:
document.activeElement
如果你想要一个jQuery对象包装的元素:
$(document.activeElement)
$( document.activeElement )
将检索它,而无需搜索整个DOM树作为推荐的jQuery的文档
试试这个:
$(":focus").each(function() {
alert("Focused Elem_id = "+ this.id );
});
我测试过的火狐,Chrome,IE9和Safari两种方式。
(1)。 $(document.activeElement)
按预期工作在Firefox,Chrome和Safari。
(2)。 $(':focus')
按预期工作在Firefox和Safari。
我搬进鼠标输入“姓名”,并按下Enter键键盘上,然后我就先聚焦元素。
(1)。 $(document.activeElement)
返回输入:文本:名称如预期在Firefox,Chrome和Safari浏览器,但它返回输入:在IE9 addPassword:提交
(2)。 $(':focus')
返回输入文字:名称预计在Firefox和Safari浏览器,但没有在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>
它是如何没有人提到..
document.activeElement.id
我使用IE8,而没有测试它在任何其他浏览器。 就我而言,我使用它,以确保一个字段是最低的4个字符,并集中在行动之前。 一旦你进入第4号,它触发。 现场有“年”的ID。 我在用..
if( $('#year').val().length >= 4 && document.activeElement.id == "year" ) {
// action here
}
$(':focus')[0]
会给你的实际元素。
$(':focus')
会给你元素的数组,通常只有一个元素集中在一个时间,所以这是只有更好,如果你以某种方式有集中的多个元素。
试试这个::
$(document).on("click",function(){
alert(event.target);
});