5

私は、Web ベースの会計ソフトウェアを設計しています。Nたとえば、ユーザーがキーを押すたびに「新しい会計伝票」を開きたいと思います。そして、キーを押すたびに「設定」を開きSます。

JavaScript と jQuery に基づくスクリプトをいくつか見ました。しかし、それらは正確には機能しませんでした。誰でも私を助けてくれますか?

私はこのスクリプトを試しました:

var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
   //Do something
}
4

4 に答える 4

6
$(document).bind('keyup', function(e){
    if(e.which==78) {
      // "n"
    }
    if(e.which==83) {
      // "s"
    }
});

入力がフォーカスされているかどうかを防ぐには:

$("body").on("focus",":input", function(){ $(document).unbind('keyup'); });
$("body").on("blur",":input", function(){ $(document).bind('keyup', function(e){ etc.... });

bindコードを複製しないように、関数を独自の関数に入れたい場合があります。例えば:

function bindKeyup(){
    $(document).bind('keyup', function(e){
      if(e.which==78) {
        // "n"
      }
      if(e.which==83) {
        // "s"
      }
    });
}
$("body").on("focus",":input", function(){ $(document).unbind('keyup'); });
$("body").on("blur",":input", function(){ bindKeyup(); });
于 2011-11-28T11:12:08.100 に答える
3

.keypress()または.keyup()メソッドのいずれかを使用して、jQuery でキープレスを検出できます。簡単な例を次に示します。

$(document).keyup(function(event) { // the event variable contains the key pressed
 if(event.which == 78) { // N keycode
   //Do something
 }
});

キーコードのリストは次のとおりです: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

更新 1

.keyup と .keydown には異なる影響があります-@ThomasClayson からのコメントによると-: キーを押したままにするとキープレスが繰り返されるため、keyup が最適です。挿入された文字ごとにイベントを登録します。また、shift などの修飾キーも登録しません (ここでは必要ありませんが、覚えておく必要があるかもしれません)。

更新 2

これは、jQuery keyup doc サイトからのものです。

どのキーが押されたかを判断するには、ハンドラー関数に渡されるイベント オブジェクトを調べます。ブラウザーはさまざまなプロパティを使用してこの情報を保存しますが、jQuery は .which プロパティを正規化するため、確実に使用してキー コードを取得できます。このコードは、矢印などの特殊キーのコードを含む、キーボードのキーに対応しています。

どのwhich.eventキーが使用されたかを判断するために必要なのは、それだけです。ありがとう @nnnnnn

于 2011-11-28T11:13:58.113 に答える
2

.keyCode()イベント オブジェクトの属性を確認する必要があります。それを調べて、どのキーが押されたかを発見し、それに応じて行動することができます。Shiftまたはなどの修飾キーをショートカットに追加することもお勧めしますAlt。これにより、誰かが無意識に入力を入力しているときにパネルがポップアップしなくなります。以下の例では、私が使用しましたShift

$(document).keyup(function(e) {
    if (e.shiftKey) {
        switch(e.keyCode ? e.keyCode : e.which) {
            case 78: // N pressed
                myNPressedHandler();
                break;
            case 83: // S pressed
                mySPressedHandler();
                break;
        }
    }
} 
于 2011-11-28T11:10:59.943 に答える
0
$(document).bind('keypress', function(e) {
    var keycode= (e.keyCode ? e.keyCode : e.which);
       if(keyCode==78) {
      // "n"
    }else if(keyCode==83) {
      // "s"
    }

});
于 2011-11-28T11:26:11.300 に答える