【问题标题】:How to jump from one input to the next one with the same class (jQuery)如何使用相同的类从一个输入跳转到下一个输入(jQuery)
【发布时间】:2012-06-20 17:00:52
【问题描述】:

我正在寻找一种方法来从输入跳转到具有相同类的下一个输入。表单中的输入应该相互链接(不是全部,而是一些)。这可以很容易地完成,因为布局很简单,但是布局可以并且将会改变,因此很难做类似 parent() -> next() 之类的事情。那么如何在不返回第一个元素的情况下找到具有相同类的表单/布局中的下一个输入(不想循环它们)。

表单代码(示例仅供参考)

<form>
    <div>
        <input type="text" class="chainme"/>
    </div>
    <div>
        <input type="text"/>
    </div>
    <div>
        <input type="text"/>
    </div>
    <div>
        <div>
            <input type="text" class="chainme"/>
        </div>
        <div>
            <input type="text" class="chainme"/>
            <div>
                <input type="text"/>
                <input type="text" class="chainme"/>
            </div>
        </div>
    </div>
</form>

【问题讨论】:

  • 请添加一些您正在使用的html。

标签: javascript jquery forms filtering


【解决方案1】:

我能想到的最简单的方法是:

$('form').on('keypress','input',function(e){
    var eClassName = this.className,
        index = $(this).index('.' + eClassName) + 1;
    if (e.which === 13){
        e.preventDefault();
        $('input.' + eClassName)
            .eq(index)
            .focus();
    }
});​

JS Fiddle demo.

这假定您要按 Enter 键移动到同一类的下一个input。此外,该元素只有一个类。

参考资料:

【讨论】:

  • @user759235:不客气!但请查看修改后的代码(在原始版本中我使用了index(),我应该使用eq(),我刚刚更正了)。 ...哎呀。 =/
  • 谢谢,我确实遇到了一个错误,但是 .eq() 修复了它,非常感谢我今天学到了一些新东西!
  • 是的;这正是我得到的,我有点尴尬,我花了这么长时间才记住index() 返回索引并且没有设置索引。叹息,仍然遇到 getter/setter 问题... =)
  • 好吧,我们都会犯错,生活,但重点是你解决了我的问题;-)
【解决方案2】:

jQuery next() 允许您传入一个选择器 - 这会将其限制为仅您想要的类,而不是回到开头。

【讨论】:

  • .next 将选择 下一个兄弟 当且仅当它匹配选择器。
  • 下一个不能通过 DOM。我添加了一个布局示例。谢谢
  • 啊,没看到那部分。在这种情况下,David 的解决方案很好 - 您甚至可以通过提前为该特定类的所有元素建立索引并遍历存储的数组来优化它。
猜你喜欢
  • 2021-11-16
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
  • 2021-08-12
  • 2012-11-23
  • 2014-07-30
相关资源
最近更新 更多