我使用的是最新版本的JQuery hotkeys。
插件非常棒,而且主要是完全符合我的需要。
但是,我想绑定一组键,例如“A + H”,例如:
jQuery(document).bind('keydown', 'a+h', function(evt) { alert('hello world!'); }
这似乎不起作用 - 有没有人成功实现过这个目标? CTRL + A等有效,但如果我能绑定到字母数字字符的组合,那将是理想的。
答案 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
});
});