mcb*_*eav 4 javascript jquery event-handling javascript-events
我目前正在使用一个开关来在按下某个键时触发一些代码。这不是确切的代码,但它基本上是我正在使用的代码(这只是为了在此处保持简短和简单。)
$(document).keydown(function(e) {
switch(e.keyCode) {
case 39:
e.preventDefault();
alert("Arrow Key");
break;
case 37:
e.preventDefault();
alert("Arrow Key");
}
});
Run Code Online (Sandbox Code Playgroud)
当输入框处于焦点时,如何防止事件触发?
我认为您的意思是您只想e.preventDefault()在目标元素不是input标签时才这样做。你可以这样做:
$(document).keydown(function(e) {
if (e.target.nodeName.toLowerCase() !== 'input') {
switch(e.keyCode) {
case 39:
e.preventDefault();
alert("Arrow Key");
break;
case 37:
e.preventDefault();
alert("Arrow Key");
}
}
});
Run Code Online (Sandbox Code Playgroud)
e.target是事件发生的元素。或者,您可以使用 jQuery 的事件委托 API:
$(document).delegate(':not(input)', 'keydown', function(e) {
switch(e.keyCode) {
case 39:
e.preventDefault();
alert("Arrow Key");
break;
case 37:
e.preventDefault();
alert("Arrow Key");
}
});
Run Code Online (Sandbox Code Playgroud)
编辑更新了我的答案,以进行“不是输入”而不是“是输入”检查。
| 归档时间: |
|
| 查看次数: |
4696 次 |
| 最近记录: |