使用jQuery,我如何获得具有插入符号(光标)焦点的输入元素?
或者换句话说,如何确定输入是否具有插入符号?
答案 0 :(得分:687)
// 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 docs:
与其他伪类选择器(以“:”开头的那些)一样,建议先于:使用标记名称或其他选择器进行聚焦;否则,隐含通用选择器(“*”)。换句话说,裸
$(':focus')
等同于$('*:focus')
。如果您正在寻找当前关注的元素,$(document.activeElement)将检索它而无需搜索整个DOM树。
答案是:
document.activeElement
如果你想要一个包装元素的jQuery对象:
$(document.activeElement)
答案 1 :(得分:32)
$( document.activeElement )
将检索它而无需按照jQuery documentation
的建议搜索整个DOM树答案 2 :(得分:6)
试试这个:
$(":focus").each(function() {
alert("Focused Elem_id = "+ this.id );
});
答案 3 :(得分:5)
我在Firefox,Chrome,IE9和Safari中测试了两种方式。
(1)。 $(document.activeElement)
在Firefox,Chrome和Safari中按预期工作。
(2)。 $(':focus')
在Firefox和Safari中按预期工作。
我移动鼠标输入'name'并在键盘上按Enter键,然后我尝试获取焦点元素。
(1)。 $(document.activeElement)
在Firefox,Chrome和Safari中返回输入:text:name,但它返回输入:IE9中的submit:addPassword
(2)。 $(':focus')
返回输入:text:在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>
答案 4 :(得分:2)
怎么没人提到..
<asp:HyperLink ID="link" runat="server">
<asp:Image ID="img" runat="server"
ImageUrl="~/images/app/your-img.png"
onclick="openWinPopUp(this.src)" />
</asp:HyperLink>
<script>
function openWinPopUp(URL, w, h, t, l) {
var wdh = (w == null || w == "" || w == "undefined") ? 250 : w;
var hgh = (h == null || h == "" || h == "undefined") ? 160 : h;
var tp = (t == null || t == "" || t == "undefined") ? 200 : t;
var lft = (l == null || l == "" || l == "undefined") ? 100 : l;
window.open(URL, "blank", "toolbar=no,location=no,directories=no," +
"status=no,menubar=no,scrollbars=yes," +
"resizable=no,copyhistory=no," +
"width=" + wdh + ", height=" + hgh + ", left =" + lft + "," +
"top = " + tp + ";");
}
</script>
我使用的是IE8,并没有在任何其他浏览器上测试过。在我的情况下,我正在使用它来确保一个字段至少4个字符并在表演之前集中注意力。输入第4个数字后,它会触发。该字段的ID为“年份”。我正在使用..
document.activeElement.id
答案 5 :(得分:0)
$(':focus')[0]
将为您提供实际的元素。
$(':focus')
将为您提供一系列元素,通常一次仅关注一个元素,因此,如果您以某种方式关注了多个元素,这会更好。
答案 6 :(得分:0)
尝试一下::
$(document).on("click",function(){
alert(event.target);
});
答案 7 :(得分:0)
如果要确认焦点是否在元素上,则
if ($('#inputId').is(':focus')) {
//your code
}