任何人都可以告诉我为什么我的脚本禁用了s键吗?

时间:2014-01-11 21:33:18

标签: javascript jquery

出于某种原因,每当我运行脚本并且它选择 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() { });

2 个答案:

答案 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;
}