出于某种原因,每当我运行脚本并且它选择 Ctrl + S 组合时,似乎禁用 S 键直到我再次按 Ctrl + S ...
任何帮助都会有很大帮助。
$.ctrl = function(key, callback, args) {
var isCtrl = false;
$(document).keydown(function(e) {
if(!args) args=[]; // IE barks when args is null
if(e.ctrlKey) isCtrl = true;
if(e.keyCode == key.charCodeAt(0) && isCtrl) {
callback.apply(this, args);
return false;
}
}).keyup(function(e) {
if(e.ctrlKey) isCtrl = false;
});
};
$.ctrl('S', function() { });
答案 0 :(得分:2)
需要isCtrl
var吗?我认为这已经足够了:
$.ctrl = function(key, callback, args) {
$(document).keydown(function(e) {
if(!args) args=[]; // IE barks when args is null
if(e.keyCode == key.charCodeAt(0) && e.ctrlKey) {
callback.apply(this, args);
return false;
}
});
};
$.ctrl('S', function() {
console.log("Pressed ctrl S")
});
适合我:http://jsfiddle.net/edgarinvillegas/X9SVC/1/
干杯
答案 1 :(得分:1)
看起来永远不会触发 Ctrl 的回调。调用该函数后,您可以尝试清除isCtrl
:
if(e.keyCode == key.charCodeAt(0) && isCtrl) {
callback.apply(this, args);
isCtrl = false;
return false;
}