6

Googleで検索しましたが、探していた答えが見つかりませんでした。

ユーザーがこのようなキーを押したかどうかを確認したい-

if(document.onkeyup) {
   // Some Stuff here
}

私はこれができることを知っています、この方法で -

document.onkeyup = getKey;

ただし、関数getKeyは値を返すことができません。

では、ユーザーがキーを押したかどうかを確認するにはどうすればよいでしょうか?

編集:このことには純粋なJavascriptが必要です..

4

6 に答える 6

4

これは、jQueryなどの外部ライブラリを必要とせずに、イベントオブジェクトを使用して純粋なJavascriptで実行できます。

キーコードをキャプチャするには、getKey関数のパラメーターとしてイベントを渡すだけです。

function getKey(e)
{
    window.alert("The key code is: " + e.keyCode);
}

document.onkeyup = getKey;

頻繁に使用されるkeyCodeリスト:

keyCodeの便利なリストについては、次のURLを確認してください。

http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

keyCodeをグローバル変数に設定します。

後で使用するためにkeyCodeをキャプチャすることに興味がある場合は、次のようにすることができます。

var keycode = "";

(...)

function getKey(e)
{
    keycode = e.keyCode;
}

document.onkeyup = getKey;


window.alert("The key code is: " + keycode);

keyCodeをイベントソースオブジェクトに設定します。

私のようにグローバル変数が気に入らない場合は、次のようにすることもできます。

function getKey(e)
{
    keycode = e.keyCode;

    var objectFromEvent = e.currentTarget ? e.currentTarget : event.srcElement;

    objectFromEvent.customProperty = keycode;
}


document.customProperty = "";
document.onkeyup = getKey;

// now the value is in the "customProperty" of your object =)

window.alert("The key code is: " + document.customProperty);
于 2013-01-15T22:39:34.743 に答える
2

それを行う1つの方法は、変数を使用することです。次に、変数のいくつかが他のものであったことを確認できます...

例えば

    var keypressed = "";
    document.onkeyup = function(e){

    if (typeof event !== 'undefined') {
        keypressed = event.keyCode;
      }
      else if (e) {
        keypressed = e.which;
      }  

  return false;   // Prevents the default action

}
于 2013-01-15T22:44:51.620 に答える
1

イベントをウィンドウ グローバル オブジェクトにアタッチし、イベントをリッスンする関数を設定する必要があります。このサンプルでは、keyup​​ およびkeydownイベントを追跡する方法を示します。

window.addEventListener('keydown', onKeyDown, true);
window.addEventListener('keyup', onKeyUp, true);

function onKeyDown(evt) {
  // key up event as been fired
  console.log(evt.keyCode);
}

function onKeyUp(evt) {
  // key up event as been fired
  console.log(evt.keyCode);
}

詳細については、MDN のelement.addEventListenerを参照してください。

于 2013-01-15T22:40:07.377 に答える
1

あなたは本当にこれを行うべきではありませんが、本当にしなければならない場合:

var getKey = (function () {
  var currentKey = null;

  document.onkeyup = function (event) {
    // determine the pressed key (across browsers)
    // by inspecting appropriate properties of `event`
    // and update currentKey; E.g:
    currentkey = event.which ? event.which : window.event.keyCode;
  }

  return function () {
    return currentkey;
  }
})();

これにより、最後に押されたキー ユーザーが表示されます。

現在押されているキーを (リリースされるまで) 取得する必要がある場合は、イベントをアタッチして変数keydownを更新し、イベントを に設定する必要があります。currentKeykeyupnull

于 2013-01-15T22:43:32.470 に答える
0

jquery を使用して、次のようにします。

   // arrow keys click
$(document).keyup(function(e) {
    // left arrow
    if (e.keyCode == "37" ) {
        // left stuff
    // right arrow
    } else if (e.keyCode == "39") {
        // right stuff
    // up arrow
    } else if (e.keyCode == "38") {
        // up stuff
    // down arrow
    } else if (e.keyCode == "40") { 
        // down stuff
    }
});

など、ここで見られるさまざまなキーコードについてhttp://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

于 2013-01-15T22:37:02.597 に答える