jQuery检查元素以确保没有焦点

时间:2012-07-19 13:08:14

标签: jquery html loops

我有一个分区(< 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>

感谢。

2 个答案:

答案 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)')