我有一个分区(< div>),其中包含一个表单,如果任何< input>有焦点,我想找出使用jQuery,如果没有,我想要调用一个函数。
这样做的最佳方式是什么?
div / form结构的概念。
<div id="section1">
<form ...>
<input type="text" id="v1">
<input type="text" id="v2">
<input type="text" id="v3">
<input type="text" id="v4">
<input type="checkbox">
</form>
</div>
感谢。
答案 0 :(得分:7)
选择输入元素并过滤掉焦点输入元素:
$("#section1 input").filter(":focus")
应该为空,然后没有任何元素具有焦点。实际上,您有几种不同的选择方式来实现相同的结果。
if ($("#section1 input:focus").length === 0){
callYourFunction();
}
因为0是falsy value,所以上述if条件实际上是相同的,如:
if ( !$("#section1 input:focus").length )
请注意,并不总是建议以这种方式检查虚假值。如果你用“正常”(第一种)方式写它,它通常会更好,更明显,更不容易出错。
答案 1 :(得分:2)
您可以尝试如下:
$('input:focus')
将找出所有重点输入元素。
if( !$('#section1 form input:focus').length ) {
// do something if not focused element exists
callFunction();
}
找出没有集中的输入:
$('#section1 form input:not(:focus)')