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演示 。