键盘事件,如果没有输入

Min*_*ing 2 jquery events if-statement exception key

我的网站上有以下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>
Run Code Online (Sandbox Code Playgroud)

我正在使用窗口和文档,因为它们的工作和搜索都没有让我发现功能方面的差异.但无论如何,我想知道的是如何在输入字段中保持函数不被触发.因为它工作和一切,但我不希望当用户只是在他们按下键并且不打字时键入事件.

看起来很简单,但我真的很喜欢.保持给我其他问题的结果.

T.J*_*der 5

在事件中:

if ($(e.target).closest("input")[0]) {
    return;
}
Run Code Online (Sandbox Code Playgroud)

这样做是看目标是否来自或通过一个input元素并返回而不做任何事情.更多:closest| event.target您的其他案例的逻辑将遵循,例如:

$(document).keydown(function(e) {
    if ($(e.target).closest("input")[0]) {
        return;
    }
    if(e.keyCode==68){
        window.location.href = "{PreviousPost}";
    }
});
Run Code Online (Sandbox Code Playgroud)

注意 - 如果您还想过滤掉select元素,那么:( $(e.target).closest("input, select")依此类推,例如button元素).