keydown事件使用jQuery触发器无法正确触发

请考虑以下代码:

 



1 2 3

和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); }); }); 

问题是当我在TextBox1上按TAB时 ,我得到了keyCode消息“9”,而Textbox2得到焦点。 但是当我按下Button1我得到了keyCode消息“9”,但Textbox2没有获得焦点。 我的错误在哪里? 谢谢

现场演示

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

这里的按钮实际上并没有按下TAB键,而是将tab事件传递给input元素。

如果你想让这个动作模糊#TextBox1元素并聚焦#TextBox2元素,你可以使用jQuery的blur()focus()函数:

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

JSFiddle演示