2012-02-20 4 views
2

私はjQueryでキーの組み合わせを検出しようとしていますが、私は最後のように数時間、実行可能なソリューションを見つけようとしています。すべてのものがCtrlキーではうまくいくが、Macではコマンドキーではうまくいかないようだ。このコードはほんのちょうど私が望むものですが、どのようにコマンドで動作させることができますか?jQueryとCmd + Bキーの組み合わせ

$.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; 
    }); 
}; 

答えて

5

これは動作するはずです:なぜkeyUpイベント

$(document).keydown(function (e) { 
    if (!args) { args = []; } 
    if (e.which === 98 && (e.ctrlKey || e.metaKey)) { // Ctrl + b 
     callback.apply(this, args); 
     return false; 
    } 
}); 

を?私は間違っている可能性がありますが、修飾キーはkeyup()では機能しませんが、keydown()では動作します。

+0

ええと、私は "argsが定義されていません"というエラーが表示されています。何か案が? – Adam

+0

ああ、さて、 'args'は何ですか?それは何であるはずですか?私はちょうどあなたのコードの関連部分を修正しました... – elclanrs

+0

なぜ '$ .ctrl = function(key、c​​allback、args)'? – elclanrs

関連する問題