我正在使用最新版本的JQuery hotkeys。
该插件非常棒,并且主要完成了我需要它做的事情。
但是,我想绑定到诸如“A+H”之类的键组合,例如:
jQuery(document).bind('keydown', 'a+h', function(evt) { alert('hello world!'); }
这似乎不起作用 - 有没有人成功地做到了这一点?CTRL+A 等有效,但如果我可以绑定到字母数字字符的组合,那将是理想的。
我正在使用最新版本的JQuery hotkeys。
该插件非常棒,并且主要完成了我需要它做的事情。
但是,我想绑定到诸如“A+H”之类的键组合,例如:
jQuery(document).bind('keydown', 'a+h', function(evt) { alert('hello world!'); }
这似乎不起作用 - 有没有人成功地做到了这一点?CTRL+A 等有效,但如果我可以绑定到字母数字字符的组合,那将是理想的。
我查看了代码库,它看起来像插件的编程方式,它不支持您描述的用例。它将修饰键(shift,alt等)集中在一起作为一种特殊情况,它允许您创建涉及 mod 键的组合。但是,它不支持多个标准键。
我建议您要求插件开发人员在将来的版本中添加此功能。同时,你可以调整你的目标以适应这个插件,尝试自己修改插件,或者为这个特殊情况编写自定义代码。
顺便说一句,代码并不是特别复杂,所以你一定要看看。也许你会看到一些我没有看到的东西。
插件文件。
我认为这不可能同时检测到两个键,因为按下任何键只会触发一个事件。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”。
这不完全符合您的要求,但这适用于 a then h 而不是 a+h (这在您的键盘上很尴尬)
$(document).bind('keyup', 'a', function(){
$(document).bind('keyup', 'h', function(){
// do you shizzle
});
});