jquery - 未输入时的按键事件

标签 jquery events exception if-statement 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>

我使用窗口和文档,因为它们都可以工作,并且搜索并没有让我找出功能方面的差异。但无论如何,我想知道的是当函数位于输入字段中时如何防止函数触发。因为它可以工作,但我不希望当用户仅在按下按键并且……不打字时才触发该事件。

看似简单,但我确实搜索过。不断给我其他问题的结果。

最佳答案

事件中:

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/

相关文章:

Jquery .append 覆盖写入

java - 使用 DOM/batik 进行事件点击 : Recovery the use tag which refers a symbol

javascript - HTML、Javascript 中的自定义事件

java - SQLServer 异常 : Invalid column name

jquery - Bootstrap 日期选择器无法与 Webpack 一起使用

jQuery - 如何在其内部重复一个函数以包含嵌套文件

javascript - jQuery .on() 在给定值之前运行

html - 带指针事件的 iframe : none; but with a div inside it that has pointer-events: auto;

java - 打开新阶段时参数类型不匹配异常

java - Spring - 捕获 bean 创建异常