我的功能有问题,将键码转换为键盘键。我最初有一个巨大的switch语句,如果代码是37,我的程序会输出“左箭头键”。我的问题是,不同的浏览器没有触发某些按键,有时代码混淆了。例如,在运行Chrome的Mac上的shift + 7输出代码37,这是左箭头按键。 Mac上的Firefox不会告诉我是否按下了Tab键等等。
以下是我正在使用的代码:
function getKey(code) {
var keyPress;
// In case of special keys
switch (code)
{
case 8:
keyPress = " backspace ";
break;
case 9:
keyPress = " tab ";
break;
case 13:
keyPress = " enter ";
break;
case 16:
keyPress = " shift ";
break;
case 17:
keyPress = " control ";
break;
case 18:
keyPress = " alt ";
break;
case 20:
keyPress = " caps lock ";
break;
case 27:
keyPress = " escape ";
break;
case 46:
keyPress = " delete ";
break;
case 37:
keyPress = " left arrow key ";
break;
case 38:
keyPress = " up arrow key ";
break;
case 39:
keyPress = " right arrow key ";
break;
case 40:
keyPress = " down arrow key ";
break;
case 45:
keyPress = " insert ";
break;
case 46:
keyPress = " delete ";
break;
case 91:
keyPress = " command ";
break;
default:
keyPress = String.fromCharCode(code);
}
return keyPress;
}
$(document).keypress(function(e) {
var code = e.which;
var keyPress = String.fromCharCode(code);
$(".keystrokes").append(keyPress);
});
那么,是否有任何jquery库可以准确地给我正确按下的键?
答案 0 :(得分:0)
我不知道哪个库可以执行您想要的操作,但是该开关可以使用正确的数据。
keypress()返回实际的文本条目。 keyup()返回密钥代码。您需要检查event.where以获取键,event.shiftKey,event.metaKey,event.ctrlKey以获取修饰符。
来自http://api.jquery.com/keyup/
要确定按下了哪个键,请检查传递给处理函数的事件对象。虽然浏览器使用不同的属性来存储此信息,但jQuery会规范化.which属性,以便您可以可靠地使用它来检索密钥代码。此代码对应于键盘上的键,包括特殊键(如箭头)的代码。为了捕获实际的文本输入,.keypress()可能是更好的选择。
答案 1 :(得分:0)
您正在寻找jQuery ++的event.key
扩展程序:http://jquerypp.com/#key
您可能会喜欢以下内容:
$( <query> ).on('keypress', function(ev){
// Backspace
if(ev.keyName() == '\b') {
...
}
);
\t
\r
shift
查看带注释的来源以获取更多信息:http://jquerypp.com/release/latest/docs/key.html