JQuery无法改变对keydown的关注

时间:2010-10-28 08:45:46

标签: javascript jquery html

每当用户按下最后一个字段的标签时,我都会尝试更改焦点。我想将焦点放在另一个输入字段上。

我有以下javascript代码:

$("#input2").keydown(
  function() 
  {
    if(event.which == 9)
    {
      $("#input1").focus();
    }
  }
);

这是我的试用HTML代码:

<div id="inputArea1">
  <input id="input1" />
  <input id="input2" />
</div>

它似乎与keyup一起使用(更改焦点部分),但是再次我没有得到我想要的keyup ...

我错过了什么?

3 个答案:

答案 0 :(得分:7)

您需要通过返回false来停止活动。如果不这样做,则在切换到input1后会触发基本浏览器事件,这意味着重点位于input2

例如:

$("#input2").keydown(function(e){
  if(e.which == 9){
    $("#input1").focus();
    return false;
  }
});

答案 1 :(得分:1)

您可能需要从false处理程序返回keydown来取消浏览器对事件的默认处理,如下所示(live example):

$("#input2").keydown(
  function(event) 
  {
    if(event.which == 9)
    {
      $("#input1").focus();
      return false;
    }
  }
);

答案 2 :(得分:1)

是的,那些人在我之前得到它。

另一种jQuery方法是使用event.preventDefault()

$("#input2").keydown(
  function() 
  {
    if(event.which == 9)
    {
      event.preventDefault();
      $("#input1").focus();   
    }
  }
);

实例: http://jsfiddle.net/ebGZc/1/