【发布时间】:2012-12-02 19:07:28
【问题描述】:
有什么想法吗?想不通...它说arr不等于[17, 67]
var key = function(keys, fn) {
var arr = [];
$(document).on({
keydown: function(e) {
arr.push(e.which);
if (arr === keys) {
fn();
}
},
keyup: function() {
arr = [];
}
});
};
// ctrl + c
key([17, 67], function() {
alert(true);
});
这是fiddle
更新
由于Cymen 的回答它有效,但是如果您按 ctrl + a 然后按 ctrl + alt + a 或反之亦然,您必须触发第二个快捷方式两次才能工作,有什么想法吗?
新fiddle。
var key = function(keys, fn) {
var arr = [];
$(document).on({
keydown: function(e) {
arr.push(e.which);
for (var i = 0; keys[i]; i++) {
if (arr[i] !== keys[i]) {
return false;
}
}
fn(e);
arr = [];
},
keyup: function() {
arr = [];
}
});
};
// ctrl + c
key([17, 67], function() {
alert(true);
});
// ctrl + alt + c
key([17, 18, 67], function() {
alert('ctrl+alt+c');
});
【问题讨论】:
-
这是打破Konami code的新尝试吗?
-
不,不是真的……我只需要一个简单的快捷键/键事件处理程序……
标签: jquery keydown keyevent keyup