Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于从代码中按键盘键的jQuery库_Jquery_Keypress - Fatal编程技术网

用于从代码中按键盘键的jQuery库

用于从代码中按键盘键的jQuery库,jquery,keypress,Jquery,Keypress,我在将按键代码转换为键盘键的功能上遇到了一些问题。我最初有一个巨大的switch语句,如果代码是37,我的程序将输出“左箭头键”。我的问题是,不同的浏览器没有触发某些按键,有时代码会混淆。例如,运行Chrome的mac上的shift+7输出代码37,这是一个左箭头键。mac上的Firefox没有告诉我是否按下了tab键,等等 以下是我使用的代码: function getKey(code) { var keyPress; // In case of special

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

我不知道有哪一个库可以满足您的要求,但是开关可以处理正确的数据

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


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

您正在寻找jQuery++的
事件。key
扩展名:

您可以像下面这样:

$( <query> ).on('keypress', function(ev){
  // Backspace
  if(ev.keyName() == '\b') {
    ...
  }
);
$()。开启('keypress',功能(ev){
//退格
如果(ev.keyName()='\b'){
...
}
);
  • 选项卡键:
    \t
  • 输入键:
    \r
  • Shift键:
    Shift

查看注释来源了解更多信息:

不。我不想听特定的按键,我想每次按下一个键时,都能知道按下了哪个键。我一定错过了什么,因为这些听起来完全一样。或者至少,你可以使用其中的一些库来做你喜欢做的事情,而不是拥有一堆控制权好吧,如果我是正确的,那么这些库让你绑定一个事件,并检查是否按下了特定的键。它们是否只是让任何键被按下,而不是监听特定的键?我现在明白了。检查:你正在寻找
jwerty.is()