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


当前回答

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的示例。键,以获得更现代的检测方向键的解决方案。

其他回答

防止箭头只适用于任何对象之外的选择,实际上我还没有在另一个对象上测试LOL。 但它可以停止页面和输入类型上的箭头事件。

我已经尝试阻止箭头左右改变选择对象的值使用“e.c preventdefault()”或“返回false”在“kepress”“keydown”和“keyup”事件,但它仍然改变对象的值。但是事件仍然告诉你箭头被按下了。

我只是把其他答案中最好的部分结合起来:

$(document).keydown(function(e){
    switch(e.which) {
        case $.ui.keyCode.LEFT:
        // your code here
        break;

        case $.ui.keyCode.UP:
        // your code here
        break;

        case $.ui.keyCode.RIGHT:
        // your code here
        break;

        case $.ui.keyCode.DOWN:
        // your code here
        break;

        default: return; // allow other keys to be handled
    }

    // prevent default action (eg. page moving up/down)
    // but consider accessibility (eg. user may want to use keys to choose a radio button)
    e.preventDefault();
});

一个健壮的Javascript库,用于捕获键盘输入和输入的组合键。它没有依赖关系。

http://jaywcjlove.github.io/hotkeys/

hotkeys('right,left,up,down', function(e, handler){
    switch(handler.key){
        case "right":console.log('right');break
        case "left":console.log('left');break
        case "up":console.log('up');break
        case "down":console.log('down');break
    }
});

你可以使用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/

你可以使用jQuery绑定:

$(window).bind('keydown', function(e){
    if (e.keyCode == 37) {
        console.log('left');
    } else if (e.keyCode == 38) {
        console.log('up');
    } else if (e.keyCode == 39) {
        console.log('right');
    } else if (e.keyCode == 40) {
        console.log('down');
    }
});