【问题标题】:jQuery - on key up go to next input fieldjQuery - 上键转到下一个输入字段
【发布时间】:2012-11-23 01:05:46
【问题描述】:

我目前正忙于将结果合并到一个变量中的 13 个输入字段,我必须将其拆分为 13 个,因为我需要添加一个块效果,就像你会在现实世界中的许多表单上找到的那样。每个块的限制是一个,我需要找到一个,这样当你插入一个数字时,它会转到下一个字段,直到所有字段都被填满,然后验证功能才会启动。

这是html:

<div id="error"></div>

<form id="idCheck">
<input class="id" id="idnumber1" maxlength="1" />
<input class="id" id="idnumber2" maxlength="1"  />
<input class="id" id="idnumber3" maxlength="1"  />
<input class="id" id="idnumber4" maxlength="1"  />
<input class="id" id="idnumber5" maxlength="1"  />
<input class="id" id="idnumber6" maxlength="1"  />
<input class="id" id="idnumber7" maxlength="1"  />
<input class="id" id="idnumber8" maxlength="1"  />
<input class="id" id="idnumber9" maxlength="1"  />
<input class="id" id="idnumber10" maxlength="1"  />
<input class="id" id="idnumber11" maxlength="1"  />
<input class="id" id="idnumber12"  maxlength="1" />
<input class="id" id="idnumber13" maxlength="1"  /><span id="status"></span>
<p> <input type="submit" id="check" value="Check" /> </p>
 </form>

<div id="result"> </div>

这是 javascript:

function Validate() {
   jQuery('#error p').remove();
   var error = jQuery('#error');
  var p1 = jQuery('#idnumber1').val();
  var p2 = jQuery('#idnumber2').val();
  var p3 = jQuery('#idnumber3').val();
  var p4 = jQuery('#idnumber4').val();
  var p5 = jQuery('#idnumber5').val();
  var p6 = jQuery('#idnumber6').val();
  var p7 = jQuery('#idnumber7').val();
  var p8 = jQuery('#idnumber8').val();
  var p9 = jQuery('#idnumber9').val();
  var p10 = jQuery('#idnumber10').val();
  var p11 = jQuery('#idnumber11').val();
  var p12 = jQuery('#idnumber12').val();
  var p13 = jQuery('#idnumber13').val();


  var idNumber = p1 + p2 + p3 + p4 + p5 + p6 +p7 + p8 + p9 + p10 + p11 + p12 + p13;
  };

非常感谢任何帮助。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您可以使用keyup 和next 方法:

    $('input.id').on('keyup', function(){
        if (this.value.match(/\d+/)) {
            var $this = $(this);
            if ($this.next('input').length) {
              $this.next().focus();
            } else {
              Validate()
            }  
        }
    })
    
    function Validate() {
       jQuery('#error p').remove();
       var error = jQuery('#error');
       var idNumber = $('input.id').map(function(){
                          return this.value
                      }).get().join(''); 
    }
    

    http://jsfiddle.net/7838f/

    【讨论】:

    • 完美,它是在推动它请求一种让它也退格到字段的方法吗?
    【解决方案2】:

    你可以试试这个:

    $('#myInput').focus(function(){
        $(this).next('input').focus();
    })
    

    或

    $("input").change(function() {
      var inputs = $(this).closest('form').find(':input');
      inputs.eq( inputs.index(this)+ 1 ).focus();
    });
    

    两者均取自here。

    【讨论】:

      【解决方案3】:

      试试下面的方法

      jQuery('.id').bind({keyup:function(){$(this).next().focus()}});
      

      更新: jsFiddle Example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-29
        • 1970-01-01
        • 1970-01-01
        • 2021-04-30
        • 1970-01-01
        • 1970-01-01
        • 2017-03-11
        • 1970-01-01
        相关资源
        最近更新 更多