我已经绑定(bind)了一些事件,使其在按下左右箭头键时发生,如下所示:
$(document).keydown(function(e) {
switch(e.which) {
case 39: $("#next").trigger('click');
break;
case 37: $("#prev").trigger('click');
break;
}
});
但是,显然,如果您在表单中并按左右键在文本中移动,则会触发这些事件。
如何更改此设置以避免发生这种情况?
最佳答案
您可以检查事件的目标( more information here )
$(document).keydown(function(e) {
//var target = (e.target) ? e.target : e.srcElement; // IE uses srcElement
// jQuery seems to handle this, so e.target should be fine
if(e.target.nodeName != 'INPUT') {
switch(e.which) {
case 39: $("#next").trigger('click');
break;
case 37: $("#prev").trigger('click');
break;
}
}
});
或者您可以通过将事件处理程序附加到输入元素来防止事件冒泡:
$('input').keydown(function(e) {
e.stopPropagation();
});
更新:
同样,您可能想测试 TEXTAREA
的节点名称。
这是一个示例:http://jsfiddle.net/86CKw/1/
关于jquery - 如何阻止 keydown 事件干扰表单字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3415172/