keydown事件不正确触发使用jQuery触发

问题描述:

请考虑下面的代码:keydown事件不正确触发使用jQuery触发

<input name="TextBox1" type="text" value="1111111111" id="TextBox1" /> 
<br /> 
<input name="TextBox2" type="text" value="222222222" id="TextBox2" /> 
<br /> 
<input name="TextBox3" type="text" value="3333333333" id="TextBox3" /> 
<br /> 
<input name="TextBox4" type="text" value="4444444444" id="TextBox4" /> 
<br /> 
<select name="DropDownList1" id="DropDownList1"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 
<br /> 
<input id="CheckBox1" type="checkbox" name="CheckBox1" /> 
<label for="CheckBox1">nima</label> 
<br /> 
<input id="Button1" type="button" value="button" /> 

和javascript:

$(document).ready(function() { 
     $("#Button1").click(function() { 
      var e = jQuery.Event("keydown"); 
      e.which = 9; // # Some key code value 
      e.keyCode = 9; 
      $("#TextBox1").trigger(e); 
     }); 

     $("#TextBox1").on("keydown", function (e) { 
      alert(e.keyCode); 
     }); 
    }); 

当我按下TABTextBox1问题是我得到的消息“9 “为keyCodeTextbox2得到重点。但是当我按Button1时,我得到讯息“9”为keyCode,但Textbox2未获得重点。我的错误在哪里? 感谢

Live Demo

的错误是,你没有实际处理TAB按自己的浏览器。按TAB,同时一个互动元素具有焦点会通知浏览器您希望将焦点移到行中的下一个元素(基于tabIndex)。

此处的按钮实际上不是按下TAB键,而是将选项卡事件传递给input元素。

如果你想有这样的动作模糊#TextBox1元素和重点#TextBox2元素,你可以使用jQuery的blur()focus()功能:

$("#TextBox1").on("keydown", function (e) { 
    if (e.which === 9) { 
     $(this).blur(); 
     $('#TextBox2').focus(); 
    } 
}); 

JSFiddle demo

+0

谢谢@詹姆斯。问题是我想使用Enter键在我的控件之间导航。我为此使用了一个代码,但该代码不再适用于IE 11。请参阅此主题:http://*.com/questions/26438274/replace-keycode-in-ie-11 – Arian 2014-10-20 09:47:38

+0

@Kerezo这是一个不同的问题。如果您觉得我的帖子在这里回答了您在此提出的问题,请您接受它,以便它可以关闭?谢谢! – 2014-10-20 09:54:57