jQuery模拟tabbing:使用keypress事件检查焦点并前进到下一个

时间:2015-10-15 18:07:21

标签: javascript jquery jquery-selectors

我有一张表格。用户按下回车键。他们的按键被捕获,我喜欢我的脚本将焦点提升到当前表单中的下一个可见表单元素。

我目前的想法是,我需要获得循环焦点的输入列表,但我仍然坚持推进的概念 - 比如,我如何弄清楚"下一个&# 34;需要去的是?到目前为止,这是我的代码。

$('.myitems input').on('keydown', function(e){
  if ( e.which == 13 ) {

    // Get list of items I want to iterate through
    var fields = $('.myitems input:visible');

    // ...Now what...
  }

});

我基本上喜欢将焦点转移到项目集中的下一个可见输入。我猜测为了做到这一点,我需要扫描那些项目,找出哪一个有焦点,然后将焦点分配给列表中的下一个。

但我无法以合理的效率方式考虑任何方式。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这将使焦点在兄弟输入之间循环。我使用nextAll以防input以外的其他内容。



$('input.items').on('keydown', function(e){
  if ( e.which == 13 ) {
   var $next = $(this).nextAll('input');
    if($next.length === 0){
      $next = $(this).siblings('input');
    }
    $next.first().focus();
  }

});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <input class="items" type="text"> <br>
  <input class="items" type="text"> <br/>
  <input class="items" type="text"> <br/>
  </form>
&#13;
&#13;
&#13;