【问题标题】:jQuery library for getting keyboard key pressed from code用于从代码中按下键盘键的 jQuery 库
【发布时间】:2013-07-17 17:58:17
【问题描述】:

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

【问题讨论】:

  • 没有。我不想听一个特定的按键,我想,每次按下一个键时,都知道按下了哪个键。
  • 我一定遗漏了一些东西,因为这些听起来完全一样。或者至少,您可以使用其中一些库来做您喜欢的事情,而不是拥有一堆控制流。
  • 好吧,如果我是正确的,那些库让您绑定一个事件并检查是否按下了该特定键。他们是否只是为了得到按下的任何键而不是监听特定的键?
  • 我现在明白了。查看:keithcirkel.co.uk/jwerty您正在寻找jwerty.is()

标签: jquery keypress


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    您正在寻找 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多