【问题标题】:jQuery check elements to make sure none are in focusjQuery检查元素以确保没有焦点
【发布时间】:2012-07-18 16:18:53
【问题描述】:

我有一个包含表单的分区 (

),我想使用 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>

谢谢。

【问题讨论】:

  • 请澄清您的问题..

标签: jquery html loops


【解决方案1】:

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

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

应该是空的,那么所有元素都没有焦点。实际上,您有几种不同的选择方式来获得相同的结果。

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

因为 0 是 falsy value,所以上面的 if 条件实际上是一样的:

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

请注意,尽管并不总是建议以这种方式检查虚假值。如果您以“正常”(第一种)方式编写它,通常会更好、更明显且不易出错。

【讨论】:

    【解决方案2】:

    您可以尝试如下:

    $('input:focus')
    

    将找出所有聚焦的输入元素。

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

    要找出不集中的输入:

    $('#section1 form input:not(:focus)')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多