whichイベント属性

事件对象参考手册イベントオブジェクト

例

押されたキーボードキーのUnicode値を取得:

var x = event.which;

x出力結果は次のとおりです:

119 // 119 は文字 "w" です "w"

試してみる »

この記事の下部にはさらに多くの例が含まれています。


定義と使用

which 属性は次を返しますonkeypressイベントがトリガーされたキーの値の文字コード、またはonkeydown 或 onkeyupイベントのキーコード。

2つのコードタイプの違いは次のとおりです:

  • 文字コード - ASCII 文字を表す数字
  • キーボードコード - キーボード上の実際のキーを表す数字

2つのタイプの値は必ずしも等しいわけではありません。例えば小文字の "w" と大文字の "W" は同じキーボードコードを持ちます。なぜならキーボード上では同じキーだからです("W" のコードは "87")。しかし、それらは異なる文字コードを持ち、2つの文字の出力は異なります("w" と "W" の文字コードは "119" と "87") - 以下の例を見るとよりよく理解できます。

ヒント:ユーザーが押したキーがプリントキー("a" や "5" など)かどうかを知る必要がある場合は、onkeypress イベントを使用することをお勧めします。ユーザーが押したキーがファンクションキー("F1"、"CAPS LOCK" や "Home" など)かどうかを知る必要がある場合は、onkeydown または onkeyup イベントを使用できます。

注意:IE8 およびそれ以前のバージョンは which 属性をサポートしていません。サポートしていないブラウザでは、keyCode属性を使用できます。ただし、Firefox ブラウザの onkeypress イベントでは keyCode 属性は無効です。これらのブラウザと互換性を持たせるには、次のコードを使用できます:

var x = event.which || event.keyCode; // 使用which 或 keyCode、これで異なるブラウザをサポートできます

ヒント:すべての Unicode 文字の一覧は、当サイトの以下を参照してください:完全な Unicode リファレンスマニュアル。

ヒント:Unicode 値を文字に変換する必要がある場合は、fromCharCode()メソッドを使用できます。

注意:この属性は読み取り専用です。

注意:which 属性と keyCode 属性は、ブラウザ間の互換性を解決する方法を提供しました。最新の DOM イベントでは、key属性を使用してこの方法を置き換えることを推奨します。

ヒント:"ALT"、"CTRL"、"META" または "SHIFT" キーが押されたかどうかを確認したい場合は、altKey, ctrlKey, metaKey 或 shiftKey属性を使用できます。


ブラウザサポート

表内の数字は、その属性をサポートする最初のブラウザのバージョン番号を示します。

属性
which Yes 9.0 Yes Yes Yes


構文

event.which

技術詳細

戻り値: 数値。Unicode 文字コードまたは Unicode キーコードを表します。
DOM バージョン: DOM Level 2 Events


实例

その他の例

例

onkeypress と onkeydown を使用して、文字コードとキーボードコードの違いを示します:

<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)">

function uniCharCode(event) {
    var char = event.which || event.keyCode; // event.keyCode は IE8 以前のバージョンで使用
    document.getElementById("demo").innerHTML = "Unicode CHARACTER code: " + char;
}

function uniKeyCode(event) {
    var key = event.which || event.keyCode; // event.keyCode は IE8 以前のバージョンで使用
    document.getElementById("demo2").innerHTML = "Unicode KEY code: " + key;
}

キーボードで "a" キーを押した場合(Caps Lock を使用しない)、出力結果は次のとおりです:

Unicode 文字コード:97
Unicode キーボードコード:65

試してみる »

例

Esc キーを押すとアラートメッセージが表示されます:

<input type="text" onkeydown="myFunction(event)">

function myFunction(event) {
    var x = event.which || event.keyCode; // event.keyCode は IE8 以前のバージョンで使用
    if (x == 27) {  // 27 は ESC キー
        alert ("You pressed the Escape key!");
    }
}

試してみる »

例

Unicode 値を文字に変換します(ファンクションキーには使用できません):

var x = event.which || event.keyCode;   // Unicode 値を取得
var y = String.fromCharCode(x);         // 値を文字に変換

試してみる »


関連ページ

HTML DOM リファレンスマニュアル:key イベント属性

HTML DOM リファレンスマニュアル:keyCode イベント属性

HTML DOM リファレンスマニュアル:charCode イベント属性

事件对象参考手册イベントオブジェクト

その他の拡張