如何防止keydown事件监听器在输入文本字段时收听?

时间:2016-08-21 22:47:49

标签: javascript

这是我的reddit附加代码。它可以帮助我更快地浏览它。这个想法是基于4chan的键盘快捷键。下一页为'N'键,前一页为'B'。

window.addEventListener("keydown", checkKeyPressed, false);
function checkKeyPressed(e){
    switch(e.keyCode){
        case 66:
            window.location = document.querySelector('a[rel="nofollow prev"]').href;
            break;
        case 78:
            window.location = document.querySelector('a[rel="nofollow next"]').href;
            break;
        default:
    }
}

我的问题是,当我在文本字段中键入包含“n”或“b”的单词时,也会发生该事件。当我专注于文本字段时,如何防止它发生?

1 个答案:

答案 0 :(得分:2)

正如zerkms所指出的那样:我不确定你是否也想要检测文本区域,如果你需要支持这种情况,你应该进一步增强代码......

window.addEventListener("keydown", checkKeyPressed, false);
function checkKeyPressed(e){
    var elem = e.target;
    var type = elem.getAttribute("type");
    if(type!='text'){
    switch(e.keyCode){
        case 66:
            //window.location = document.querySelector('a[rel="nofollow prev"]').href;
            alert("case 66");
            break;
        case 78:
            //window.location = document.querySelector('a[rel="nofollow next"]').href;
            alert("case 78");
            break;
        default:
    }
    }

}