2014-01-11 21 views
1

出於某種原因,每當我運行該腳本,並拿起按Ctrl +小號組合似乎直到我按下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

傳遞函數的'_callback_(){執行console.log( 'S')}'使代碼按預期方式工作在_Chrome_ for'Ctrl' +'S' –

回答

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/

乾杯

+0

謝謝搭檔似乎你的片段做了伎倆,並沒有影響其他關鍵功能......感謝百萬 – Andre

+0

歡迎!你能否將我的答案標記爲已接受? :d –

1

貌似回調的Ctrl鍵永遠不會觸發。你可以嘗試清除isCtrl調用該函數後:

if(e.keyCode == key.charCodeAt(0) && isCtrl) { 
    callback.apply(this, args); 
    isCtrl = false; 
    return false; 
} 
相關問題