keyup和shift + tab问题

时间:2011-06-29 17:08:12

标签: jquery

我正在编写一个小型jQuery表单例程,旨在帮助用户填写一组银行排序代码字段。有3个字段 - 当用户在一个字段中填入2个数字时,光标会自动聚焦()到下一个字段。

但是,如果用户决定将+ tab切换回前一个字段,则会出现问题。如果此字段已包含2个字符,则光标不会停留在该字段内,而是再次向前跳转。

HTML:

<div class="formItem sortCode clearfix">
  <input type="text" maxlength="2">
  <input type="text" maxlength="2">
  <input type="text" maxlength="2">
</div>

jQuery的:

var $sortCollection = $('.sortCode input');

$('.sortCode input').keyup(function(event) {

  var sortValue = $(this).val();            
  var sortPosition = $sortCollection.index(this);       

  if (!(event.keyCode == 9 && event.shiftKey)) {
    if (sortValue.length == 2 && sortPosition != 2) {
      sortPosition += 1;
      $sortCollection.eq(sortPosition).focus().select();
    }
  }
});

我有一种感觉问题是当Shift键被释放时触发的keyup事件但是我不确定。请有人看看。

3 个答案:

答案 0 :(得分:5)

试试这个:

if (!(event.keyCode == 16 || event.keyCode == 9)) { 
    if (sortValue.length == 2 && sortPosition !== 2) {
      sortPosition += 1;
      $sortCollection.eq(sortPosition).focus().select();
    }
}

答案 1 :(得分:0)

我认为你想要的是忽略shift键点击,只需添加

if (event.keyCode == 16) return;

$('.sortCode input').keyup(function(event) {

注意:这不会影响event.shiftKey

答案 2 :(得分:0)

$('.formItem input[type=text]').focus(function(){
     if ($(this).length == 2 ) {
          $(this).next('.formItem input[type=text]').focus();
     }
});

尝试将此工作放入代码中,不检查击键,但焦点由输入框的值控制。如果输入框聚焦的长度为2,则下一个输入框将被聚焦。这应该落空,直到找到长度为2的输入框。