我如何检测当一个方向键被按下?我用这个找到了答案:

function checkKey(e) {
    var event = window.event ? window.event : e;
    console.log(event.keyCode)
}

虽然它适用于所有其他键,但它不适用于方向键(可能是因为浏览器默认情况下应该在这些键上滚动)。


当前回答

你需要按下键,而不是按下键。

假设你想在按下键的同时连续移动一些东西,我发现除了Opera以外,所有浏览器都可以按下键。对于Opera,按键只在第一次按下时触发。为了适应Opera的使用:

document.onkeydown = checkKey;
document.onkeypress = checkKey;
function checkKey(e)
{ etc etc

其他回答

方向键只能由onkeydown触发,而不是onkeypress。

键码是:

左= 37 Up = 38 右= 39 下降= 40

我已经能够用jQuery捕获它们:

$(document).keypress(function (eventObject) {
    alert(eventObject.keyCode);
});

示例:http://jsfiddle.net/AjKjU/

这个图书馆真棒! https://craig.is/killing/mice

Mousetrap.bind('up up down down left right left right b a enter', function() {
    highlight([21, 22, 23]);
});

不过,您需要快速按下序列以突出显示该页中的代码。

你需要按下键,而不是按下键。

假设你想在按下键的同时连续移动一些东西,我发现除了Opera以外,所有浏览器都可以按下键。对于Opera,按键只在第一次按下时触发。为了适应Opera的使用:

document.onkeydown = checkKey;
document.onkeypress = checkKey;
function checkKey(e)
{ etc etc

如果你使用jquery,你也可以这样做,

 $(document).on("keydown", '.class_name', function (event) {
    if (event.keyCode == 37) {
        console.log('left arrow pressed');
    }
    if (event.keyCode == 38) {
        console.log('up arrow pressed');
    }
    if (event.keyCode == 39) {
        console.log('right arrow pressed');
    }
    if (event.keyCode == 40) {
        console.log('down arrow pressed');
    }
 });