which 事件屬性

事件對象參考手冊 事件對象

實例

獲取按下的鍵盤按鍵Unicode值:

var x = event.which;

x 輸出結果為:

119   // 119 是字元 "w"

本文底部包含了更多實例。


定義和使用

which 屬性返回onkeypress事件觸發的鍵的值的字元代碼,或者 onkeydownonkeyup 事件的鍵的代碼。

兩種代碼類型的區別是:

  • 字元代碼 - 表示 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;  // 使用 whichkeyCode, 這樣可支持不同流覽器

提示: 所有 Unicode 字元列表可查看我們的 完整 Unicode 參考手冊

提示: 如果你需要將 Unicode 值轉換為字元,可以使用 fromCharCode() 方法。

注意: 該屬性是只讀的。

注意: which 和 keyCode 屬性提供瞭解決流覽器的相容性的方法,最新版本的 DOM 事件推薦使用 key 屬性來替代該方法。

提示: 如果你想查看是否按下了 "ALT", "CTRL", "META" 或 "SHIFT" 鍵,可使用 altKey, ctrlKey, metaKeyshiftKey 屬性。


流覽器支持

表格中的數字表示支持該屬性的第一個流覽器的版本號。

屬性
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" 鍵 (不使用大寫鎖定), 輸出結果如下:

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 事件屬性

事件對象參考手冊 事件對象