0

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

该插件非常棒,并且主要完成了我需要它做的事情。

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

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

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

4

3 回答 3

3

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

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

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

于 2011-02-18T17:27:55.733 回答
2

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

一种解决方案是保存最后按下的键,然后等待下一个键。我对下面的代码做了一个演示:

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”。

于 2011-02-18T19:07:40.740 回答
0

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

$(document).bind('keyup', 'a', function(){
    $(document).bind('keyup', 'h', function(){
        // do you shizzle
    });
});
于 2014-11-06T14:34:05.723 回答