0

我的功能将键码转换为键盘键时遇到了一些问题。我最初有一个巨大的 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 库可以准确地给我正确按下的键?

4

2 回答 2

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

于 2013-07-17T20:10:01.457 回答
0

我不知道有一个库可以满足您的需求,但是该开关可以使用正确的数据。

keypress() 返回实际的文本条目。keyup() 返回密钥代码。您需要检查 event.where 以获取密钥,event.shiftKey、event.metaKey、event.ctrlKey 以获取修饰符。

来自http://api.jquery.com/keyup/

要确定按下了哪个键,请检查传递给处理函数的事件对象。虽然浏览器使用不同的属性来存储这些信息,但 jQuery 对 .which 属性进行了规范化,因此您可以可靠地使用它来检索关键代码。此代码对应于键盘上的一个键,包括箭头等特殊键的代码。为了捕捉实际的文本输入, .keypress() 可能是更好的选择。

于 2013-07-17T18:35:43.537 回答