我的网站中有以下 jQuery 事件
$(window).keyup (function(event) {
switch (event.keyCode) {
case 68: // Alt-N = next
scroll ('next');
break;
case 65: // Alt-P = prev
scroll ('prev');
break;
}
});
});
<script>
$(document).keydown(function(e) {
if(e.keyCode==68){
window.location.href = "{PreviousPost}";
}
});
</script>
我使用窗口和文档,因为它们都可以工作,并且搜索并没有让我找出功能方面的差异。但无论如何,我想知道的是当函数位于输入字段中时如何防止函数触发。因为它可以工作,但我不希望当用户仅在按下按键并且……不打字时才触发该事件。
看似简单,但我确实搜索过。不断给我其他问题的结果。
最佳答案
事件中:
if ($(e.target).closest("input")[0]) {
return;
}
它的作用是查看目标是否源自或通过 input
元素,如果是,则返回而不执行任何操作。更多:closest
| event.target
其他情况的逻辑如下,例如:
$(document).keydown(function(e) {
if ($(e.target).closest("input")[0]) {
return;
}
if(e.keyCode==68){
window.location.href = "{PreviousPost}";
}
});
注意- 如果您还想过滤掉 select
元素,则: $(e.target).closest("input, select")
(依此类推,例如按钮
元素)。
关于jquery - 未输入时的按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891902/