KeyboardEvent which 属性

定義と使用方法

which 属性がトリガー onkeypress イベント のキーの Unicode 文字コード、またはトリガー onkeydown または onkeyup イベントのキーの Unicode キーコード

2つのコードタイプの違い:

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

これらのタイプは常に同じ意味を指しているとは限りません。例えば、小文字の「w」と大文字の「W」のキーボードコードは同じです(「W」は数字「87」ですが)、しかし、結果的な文字コードは異なります(「w」または「W」、すなわち「119」または「87」)- 下記の例を参照して、この点についてよりよく理解することができます。

ヒント:ユーザーが印刷可能なキー(例えば「a」または「5」)を押したかどうかを確認するには、この属性を使用して onkeypress イベントに推奨します。ユーザーが機能キー(例えば「F1」、「CAPS LOCK」または「Home」)を押したかどうかを確認するには、onkeydown または onkeyup イベントを使用してください。

注釈:IE8およびそれ以前のバージョンでは、which属性がサポートされていません。これらのブラウザバージョンでは、keyCode属性を使用できます。ただし、keyCode属性はFirefoxのonkeypressイベントでは機能しません。クロスブラウザのソリューションには、以下のコードを使用できます:

var x = event.which || event.keyCode;  // which または keyCode を使用するかは、ブラウザのサポートに依存

ヒント:すべてのUnicode文字のリストについては、私たちの 完全なUnicodeリファレンス

ヒント:Unicode値を文字に変換するには、 fromCharCode() メソッド

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

注釈:keyCode と which 属性は互換性のために提供されています。最新バージョンの DOM イベント規格では、key 属性を使用することを推奨しています(利用可能の場合)。

ヒント:「ALT」、「CTRL」、「META」または「SHIFT」キーが押されているかどうかを知りたい場合は、 altKeyctrlKeymetaKey または shiftKey 属性。

押されたキーボードのボタンの Unicode 値を取得します:

var x = event.which;

ページの下部には、さらに TIY 実例があります。

実際に試してみる

構文

event.which

技術的詳細

返り値: Unicode文字コードまたはUnicodeキーボードコードを示す数値。
DOMバージョン: DOMレベル2イベント

ブラウザのサポート

表中的数字注明了完全支持该属性的首个浏览器版本。

属性 Chrome IE Firefox Safari Opera
which サポート 9.0 サポート サポート サポート

更多实例

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」キーを押したとき(Capslockを使用しない場合)、charとkeyの結果は以下の通りです:

Unicode CHARACTER code: 97
Unicode KEY code: 65

実際に試してみる

ユーザーがEscapeキーを押した場合、テキストを表示します:

<input type="text" onkeydown="myFunction(event)"> 
function myFunction(event) {
  var x = event.which || event.keyCode; // event.keyCodeはIE8およびそれ以前のバージョンで使用
  if (x == 27) {  // 27はESCキーの値
    alert("Escapeキーを押しました!");
  }
}

実際に試してみる

Unicode 値を文字に変換(機能キーには適用されません):

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

実際に試してみる

関連ページ

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

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

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