如何在Javascript和/或jQuery中绑定函数到左和右方向键?我查看了jQuery的js-hotkey插件(包装了内置的bind函数以添加一个参数来识别特定的键),但它似乎不支持方向键。


当前回答

使用纯Javascript的简洁解决方案(感谢Sygmoral提出的改进建议):

document.onkeydown = function(e) {
    switch (e.keyCode) {
        case 37:
            alert('left');
            break;
        case 39:
            alert('right');
            break;
    }
};

参见https://stackoverflow.com/a/17929007/1397061。

其他回答

你可以使用KeyboardJS。我为这样的任务编写了库。

KeyboardJS.on('up', function() { console.log('up'); });
KeyboardJS.on('down', function() { console.log('down'); });
KeyboardJS.on('left', function() { console.log('right'); });
KeyboardJS.on('right', function() { console.log('left'); });

在这里签出库=> http://robertwhurst.github.com/KeyboardJS/

而不是使用return false;就像上面的例子一样,你可以使用e.c preventdefault ();这是一样的,但更容易理解和阅读。

这有点晚了,但热键有一个非常严重的错误,导致事件被执行多次,如果你附加多个热键到一个元素。只需使用纯jQuery。

$(element).keydown(function(ev) {
    if(ev.which == $.ui.keyCode.DOWN) {
        // your code
        ev.preventDefault();
    }
});
document.onkeydown = function(e) {
    switch(e.which) {
        case 37: // left
        break;

        case 38: // up
        break;

        case 39: // right
        break;

        case 40: // down
        break;

        default: return; // exit this handler for other keys
    }
    e.preventDefault(); // prevent the default action (scroll / move caret)
};

如果需要支持IE8,则函数体以e = e || window.event;开关(e。其中|| e.keyCode){。

2020年(编辑) 注意KeyboardEvent。现在已经弃用了。请参阅使用KeyboardEvent的示例。键,以获得更现代的检测方向键的解决方案。

使用纯Javascript的简洁解决方案(感谢Sygmoral提出的改进建议):

document.onkeydown = function(e) {
    switch (e.keyCode) {
        case 37:
            alert('left');
            break;
        case 39:
            alert('right');
            break;
    }
};

参见https://stackoverflow.com/a/17929007/1397061。