3

フォームを含む除算(<div>)があり、jQueryを使用して、<input>のいずれかにフォーカスがあり、どれにもフォーカスがない場合は関数を呼び出したいかどうかを調べたいと思います。

これを行うための最良の方法は何ですか?

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>

ありがとう。

4

2 に答える 2

7

入力要素を選択し、フォーカスされた要素を除外します。

$("#section1 input").filter(":focus")

空にする必要があります。そうすると、どの要素にもフォーカスがありません。実際には、同じ結果を達成するために選択するいくつかの異なる方法があります。

if ($("#section1 input:focus").length === 0){
      callYourFunction();
}

0は偽の値であるため、上記のif-conditionは実質的に次のようになります。

if ( !$("#section1 input:focus").length )

ただし、この方法で偽の値をチェックすることは必ずしも推奨されないことに注意してください。多くの場合、「通常の」(最初の)方法で記述した方が、より適切で、より明白で、エラーが発生しにくくなります。

于 2012-07-19T13:11:08.130 に答える
2

以下のように試すことができます:

$('input:focus')

焦点を合わせたすべての入力要素を見つけます。

if( !$('#section1 form input:focus').length ) {
  // do something if not focused element exists
  callFunction();
}

焦点が合っていない入力を見つけるには:

$('#section1 form input:not(:focus)')
于 2012-07-19T13:18:29.497 に答える