用于从代码中获取键盘键的jQuery库

时间:2013-07-17 17:58:17

标签: jquery keypress

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

2 个答案:

答案 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') {
    ...
  }
);
  • Tab键:\t
  • 输入密钥:\r
  • Shift键:shift

查看带注释的来源以获取更多信息:http://jquerypp.com/release/latest/docs/key.html