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

Sim*_*n R 3 html jquery 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>
Run Code Online (Sandbox Code Playgroud)

谢谢.

Chr*_*oph 7

选择输入元素并过滤掉焦点输入元素:

$("#section1 input").filter(":focus")
Run Code Online (Sandbox Code Playgroud)

应为空,然后没有任何元素具有焦点.实际上,您有几种不同的选择方式来实现相同的结果.

if ($("#section1 input:focus").length === 0){
      callYourFunction();
}
Run Code Online (Sandbox Code Playgroud)

因为0是一个假值,上面的if条件实际上是相同的,如:

if ( !$("#section1 input:focus").length )
Run Code Online (Sandbox Code Playgroud)

请注意,并不总是建议以这种方式检查虚假值.如果你用"正常"(第一种)方式写它,它通常会更好,更明显,更不容易出错.