如何在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。
推荐文章
- 拖放文件到标准HTML文件输入
- 如何清除所有<div>的内容在一个父<div>?
- 检测用户何时离开网页的最佳方法?
- 当“模糊”事件发生时,我如何才能找到哪个元素的焦点去了*到*?
- React不会加载本地图像
- 如何将Blob转换为JavaScript文件
- 在另一个js文件中调用JavaScript函数
- 如何在svg元素中使用z索引?
- 如何求一个数的长度?
- 跨源请求头(CORS)与PHP头
- 如何用Express/Node以编程方式发送404响应?
- parseInt(null, 24) === 23…等等,什么?
- 使用jQuery获取第二个孩子
- JavaScript变量声明在循环外还是循环内?
- 元素在“for(…in…)”循环中排序