如何阻止 keydown 事件干扰表单字段?
我已经绑定了一些事件,使其在按左右箭头键时发生,如下所示:
$(document).keydown(function(e) {
switch(e.which) {
case 39: $("#next").trigger('click');
break;
case 37: $("#prev").trigger('click');
break;
}
});
但是,显然,如果您在表单中并按向左和向右在文本中移动,则会触发这些事件。
我该如何改变这种情况以免发生这种情况?
I've bound some events to happen on left and right arrow key press like so:
$(document).keydown(function(e) {
switch(e.which) {
case 39: $("#next").trigger('click');
break;
case 37: $("#prev").trigger('click');
break;
}
});
However, obviously if you are in a form and press left and right to move through text, these events fire.
How do I change this so that that doesn't happen?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以检查事件的目标(此处了解更多信息)
,也可以阻止该事件通过将事件处理程序附加到输入元素来防止冒泡:
更新:
同样,您可能想测试
TEXTAREA
的节点名称。这是一个示例: http://jsfiddle.net/86CKw/1/
You could check the target of the event (more information here)
or you could prevent the event from bubbling up by attaching an event handler to the input elements:
Update:
Likewise you might want to test the node name for
TEXTAREA
.Here is an example: http://jsfiddle.net/86CKw/1/
这是我能找到的最优雅的解决方案:
This is the most elegant solution I could find: