【问题标题】:JQuery Hotkeys - binding to multiple alphanumeric character combinationsJQuery Hotkeys - 绑定到多个字母数字字符组合
【发布时间】:2011-06-29 23:41:29
【问题描述】:

我正在使用最新版本的JQuery hotkeys

该插件非常棒,而且总的来说,它完全符合我的需要。

但是,我想绑定到诸如“A+H”之类的键组合,例如:

jQuery(document).bind('keydown', 'a+h', function(evt) { alert('hello world!'); }

这似乎不起作用 - 有没有人成功地做到了这一点? CTRL+A 等有效,但如果我可以绑定到字母数字字符的组合,那将是理想的。

【问题讨论】:

  • (以后当您提出问题并得到有用的答案时,您应该点击“接受答案”按钮!)
  • 我认为您正在寻找的内容将被称为“键序列”。如果你真的喜欢它,这是我考虑添加到这个库中的东西,la mousetrap.js

标签: jquery hotkeys jquery-hotkeys


【解决方案1】:

我查看了代码库,它看起来像插件的编程方式,它不支持您描述的用例。它将修饰键(shiftalt 等)作为一种特殊情况组合在一起,允许您创建涉及 mod 键的组合。但是,它不支持多个标准键。

我建议您要求插件开发人员在以后的版本中添加此功能。同时,你可以调整你的目标以适应这个插件,尝试自己修改插件,或者为这个特殊情况编写自定义代码。

顺便说一句,代码并不是特别复杂,所以你一定要看看。也许你会看到一些我没有看到的东西。
The plugin file.

【讨论】:

  • 你说得对,我只是看了一下,来源很简单。我应该先检查一下!我要修改。感谢您提供快速而有帮助的答案。
  • 没问题 :) 如果您喜欢这个答案,请随时给我一个向上箭头和一个复选标记:D
【解决方案2】:

我认为这不可能同时检测到两个键,因为按下任何键只会触发一个事件。 Shift、alt、ctrl 和其他元键是一种特殊情况。

一种解决方案是保存最后按下的键,然后等待下一个键。我在下面的代码中做了一个demo

var timer, last;
$(document).bind('keydown', function(e) {
    // Typing a then h will call the alert
    if (last == 65 && e.which === 72) {
        alert('Hello World');
    }
    last = e.which;
    // clear last value after 100 ms
    clearTimeout(timer);
    timer = setTimeout(function(){
        last = '';
    }, 100);
}); 

注意最后一个键在 100 毫秒后被清除,因为没有它,您可以按“a”然后等待大约 10 秒,然后按“h”来获取警报。现在组合必须几乎同时按下(但“a”必须在“h”之前) - 稍作修改也将允许用户先按下“h”然后按下“a”。

【讨论】:

    【解决方案3】:

    这不完全符合您的要求,但这适用于 a then h 而不是 a+h(在您的键盘上这样做很尴尬)

    $(document).bind('keyup', 'a', function(){
        $(document).bind('keyup', 'h', function(){
            // do you shizzle
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      相关资源
      最近更新 更多