2016-08-29 11 views
0

にChromeでCMD-Sをキャッチすることはできません私は両方Ctrlキーをキャッチしようとしています。私は私のコードでは、次のスニペット持っjquery keypress event for cmd+s AND ctrl+sは、Mac

:私はここでそれを行う方法についてのスレッドを見たsave()は、将来的にAJAX要求を送信するJavaScript関数です

$(document).keypress(function(event) { 
    if (event.which == 115 && (event.ctrlKey||event.metaKey)|| (event.which == 19)) { 
    event.preventDefault(); 
    save(); 
    return false; 
    } 
    return true; 
}); 

を、ちょうど現在はalert('Saved!');です。これはCtrlキーキャッチが

しかし、 - だけではなく、いつものように保存し、Webページダイアログを開いて、ChromeでS - Sを、それがCmdををキャッチしません。私は、そのページの他の誰かが同じ問題を抱えているのを見ましたが、私はその問題に対する解決策を見ませんでした。

ありがとうございます!

+0

また 'KeyPressイベントが任意の正式な仕様で覆われていない、注意することは、実際の動作は、使用している場合、それは(からブラウザ、ブラウザのバージョン、およびplatforms.'全体で異なる場合があります遭遇公式[keypress'のjQuery doc](https://api.jquery.com/keypress/))。 'keypress'を全く使わないことを考えてみたいかもしれません。 – filoxo

+0

@filoxo私に知らせてくれてありがとう:) –

答えて

0

私はkeypressと同じようにmetakeysを登録していないと思う:Diffrence between keyup keydown keypress and input eventsここでkeydownを使って動作し、それぞれを順番にキャプチャしているようだ。それが役に立てば幸い?

var metaflag = false; 
 

 
$(document).on({ 
 
\t keydown: function(event) { 
 
    if (event.ctrlKey||event.metaKey || event.which === 19) { 
 
     event.preventDefault(); 
 
     $('.monitor').text('key '+event.which); 
 
     metaflag = true; 
 
    } 
 
    \t if(metaflag && event.which === 83){ // 83 = s? 
 
     event.preventDefault(); // maybe not necessary 
 
     $('.display').text('saving?'); 
 
     metaflag = false; 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class='monitor'></div> 
 
<div class='display'></div>

+0

これは完全に動作します。ありがとう! :D –