JQuery Hotkeys - 绑定到多个字母数字字符组合

时间:2011-02-18 17:19:31

标签: jquery hotkeys jquery-hotkeys

我使用的是最新版本的JQuery hotkeys

插件非常棒,而且主要是完全符合我的需要。

但是,我想绑定一组键,例如“A + H”,例如:

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

这似乎不起作用 - 有没有人成功实现过这个目标? CTRL + A等有效,但如果我能绑定到字母数字字符的组合,那将是理想的。

3 个答案:

答案 0 :(得分:3)

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

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

顺便说一句,代码并不是特别复杂,所以你绝对应该采取措施。也许你会看到我没有的东西。
The plugin file

答案 1 :(得分: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”。

答案 2 :(得分:0)

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

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