非常教程

JavaScript 参考手册教程

which 事件属性

which 事件属性

which 事件属性

which 事件属性

事件对象

实例

获取按下的键盘按键Unicode值:

var x = event.which;

x 输出结果为:

119   // 119 是字符 "w"

尝试一下 »

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


定义和使用

which 属性返回onkeypress事件触发的键的值的字符代码,或者 onkeydown 或 onkeyup 事件的键的代码。

两种代码类型的区别是:

  • 字符代码 - 表示 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, metaKey 或 shiftKey 属性。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

属性
which Yes 9.0 Yes Yes Yes


语法

event.which

技术细节

返回值: 数字,表示 Unicode 字符代码或 Unicode 键代码
DOM 版本: DOM Level 2 Events


which 事件属性

更多实例

实例

使用 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 事件属性

which 事件属性

事件对象

which 事件属性
JavaScript 参考手册

JavaScript 参考手册提供了完整的 JavaScript 对象、浏览器对象、HTML DOM 对象手册。手册包含了每个对象、属性、方法的实例。

JavaScript 参考手册目录

1.Navigator 对象
2.HTML DOM Document 对象
3.JavaScript Array 属性构造器
4.JavaScript length 属性
5.JavaScript constructor 属性
6.JavaScript unshift() 方法
7.JavaScript valueOf() 方法
8.JavaScript sort() 方法
9.JavaScript splice() 方法
10.JavaScript toString() 方法
11.JavaScript Array indexOf() 方法
12.JavaScript join() 方法
13.JavaScript Array lastIndexOf() 方法
14.JavaScript pop() 方法
15.JavaScript push() 方法
16.JavaScript reverse() 方法
17.JavaScript shift() 方法
18.JavaScript slice() 方法
19.JavaScript Array 对象
20.JavaScript concat() 方法
21.JavaScript Boolean prototype 构造器
22.JavaScript Boolean constructor 属性
23.JavaScript getMilliseconds() 方法
24.JavaScript getHours() 方法
25.JavaScript getFullYear() 方法
26.JavaScript getDay() 方法
27.JavaScript getDate() 方法
28.JavaScript Date prototype 属性
29.JavaScript constructor 属性
30.JavaScript Boolean 对象
31.JavaScript valueOf() 方法
32.JavaScript toString() 方法
33.JavaScript UTC() 方法
34.JavaScript getUTCFullYear() 方法
35.JavaScript toLocaleString() 方法
36.JavaScript toString() 方法
37.JavaScript toTimeString() 方法
38.JavaScript toUTCString() 方法
39.JavaScript valueOf() 方法
40.JavaScript toISOString() 方法
41.JavaScript toJSON() 方法
42.JavaScript toLocaleDateString() 方法
43.JavaScript toLocaleTimeString() 方法
44.JavaScript setUTCHours() 方法
45.JavaScript setUTCMilliseconds() 方法
46.JavaScript setUTCMinutes() 方法
47.JavaScript setUTCMonth() 方法
48.JavaScript setUTCSeconds() 方法
49.JavaScript toDateString() 方法
50.JavaScript getSeconds() 方法
51.JavaScript getMonth() 方法
52.JavaScript getMinutes() 方法
53.JavaScript setMinutes() 方法
54.JavaScript setMonth() 方法
55.JavaScript setSeconds() 方法
56.JavaScript Date 对象
57.JavaScript setTime() 方法
58.JavaScript setUTCDate() 方法
59.JavaScript setUTCFullYear() 方法
60.JavaScript getUTCSeconds() 方法
61.JavaScript parse() 方法
62.JavaScript setDate() 方法
63.JavaScript setFullYear() 方法
64.JavaScript setHours() 方法
65.JavaScript setMilliseconds() 方法
66.JavaScript getUTCDay() 方法
67.JavaScript getUTCDate() 方法
68.JavaScript getTimezoneOffset() 方法
69.JavaScript getTime() 方法
70.JavaScript E 属性
71.JavaScript getUTCHours() 方法
72.JavaScript getUTCMilliseconds() 方法
73.JavaScript getUTCMinutes() 方法
74.JavaScript getUTCMonth() 方法
75.JavaScript random() 方法
76.JavaScript round() 方法
77.JavaScript sin() 方法
78.JavaScript sqrt() 方法
79.JavaScript tan() 方法
80.JavaScript atan2() 方法
81.JavaScript ceil() 方法
82.JavaScript cos() 方法
83.JavaScript exp() 方法
84.JavaScript floor() 方法
85.JavaScript log() 方法
86.JavaScript max() 方法
87.JavaScript min() 方法
88.JavaScript pow() 方法
89.JavaScript SQRT1_2 属性
90.JavaScript SQRT2 属性
91.JavaScript abs() 方法
92.JavaScript acos() 方法
93.JavaScript asin() 方法
94.JavaScript atan() 方法
95.JavaScript Math 对象
96.JavaScript LN2 属性
97.JavaScript LN10 属性
98.JavaScript LOG2E 属性
99.JavaScript LOG10E 属性
100.JavaScript PI 属性