2011-02-18 204 views
0

我正在使用最新版本的JQuery hotkeysJQuery Hotkeys - 绑定到多个字母数字字符组合

该插件非常棒,主要完成我所需要的功能。

不过,我想结合键,如“A + H”的组合,例如:

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

这似乎并不工作 - 有没有人来达到的这一成功地? CTRL + A等等,但如果我可以绑定到字母数字字符的组合,这将是理想的。

+0

(在未来,当你问一个问题,并得到一个答案这是有用的,你应该点击“接受答案”按钮!) – slifty 2011-02-23 18:36:53

+0

我认为你正在寻找的将被称为'按键序列'。如果你真的喜欢它,这是我想过加入到这个图书馆,一个la mousetrap.js – robbie613 2014-02-13 12:38:57

回答

3

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

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

顺便说一下,代码不是特别复杂,所以你应该一定要采取甘德。也许你会看到我没有的东西。
The plugin file

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

0

这不正是你的要求,但这个工程的一则h,而不是A + H(这是awkard做你的键盘上)

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