我的网站上有以下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>
我正在使用窗口和文档,因为它们的工作和搜索都没有让我发现功能方面的差异。但无论如何,我想知道的是如何在输入字段中保持函数不被触发。因为它的工作原理和一切,但我不希望当用户只是在他们按键时键入并且......没有打字时才触发事件。
看起来很简单,但我真的在搜索。保持给我其他问题的结果。
答案 0 :(得分:5)
事件:
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}";
}
});
N.B。 - 如果您还要过滤掉select
个元素,那么:$(e.target).closest("input, select")
(依此类推,例如button
元素)。
答案 1 :(得分:1)
事件已包含目标对象,因此我们可以这样检查:
if($(event.target).is('input,select,button')) return;
我们将对象event.target放在$()
中以引用DOM元素。我们可以检查元素的类型或我们需要的任何内容(例如.hasClass()
)