开发者

JQuery can't change focus on keydown

开发者 https://www.devze.com 2023-01-22 13:31 出处:网络
I\'m trying to change the focuswhenever a user presses tab on the last field. I want to set the focus on to another input field.

I'm trying to change the focus whenever a user presses tab on the last field. I want to set the focus on to another input field.

I have the following javascript code:

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

And this is my trial html code:

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

It seems to work with keyup (the changing the focus开发者_开发百科 part) but then again I don't get what I want with keyup..

What am I missing?


You need to stop the event, by returning false. If you do not, the basic browser event is fired after you switched to input1, which means the focus is back at input2.

For example:

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


Yes, those guys get to it before me.

Another jQuery way is to use event.preventDefault()

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

Live example: http://jsfiddle.net/ebGZc/1/


You probably need to cancel the default handling of the event by the browser by returning false from your keydown handler, like this (live example):

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号