JavaScript HTML DOM which 事件属性
-
which 事件属性
which属性返回触发onkeypress事件的键的Unicode字符代码,或触发onkeydown或onkeyup事件的键的Unicode键代码。两种代码类型之间的区别:- 字符代码 - 表示ASCII字符的数字
- key代码 - 表示键盘上实际密钥的数字
这些类型并不总是意味着同样的事情。例如,小写字母“w”和大写字母“W”具有相同的键盘代码,因为键盘上按下的键是相同的(只是“W”=数字“87”),但是不同的字符代码,因为结果字符不同(“w”或“W”,即“119”或“87”) - 请参阅下面的“更多示例”以更好地理解它。提示:要确定用户是否按了可打印的键(例如“a”或“5”),建议在onkeypress事件中使用此属性。要确定用户是否按下了功能键(例如“F1”,“CAPSLOCK”或“Home”),请使用onkeydown或onkeyup事件。注意: IE8及更早版本不支持哪个属性。对于这些浏览器版本,您可以使用keyCode属性。但是,keyCode属性不适用于Firefox中的onkeypress事件。对于跨浏览器解决方案,您可以使用以下代码:var x = event.which || event.keyCode; // 使用which或keyCode,具体取决于浏览器支持
提示:有关所有Unicode字符的列表,请参阅我们的 完整Unicode参考。提示:如果要将返回的Unicode值转换为字符,请使用fromCharCode()方法。注意:此属性是只读的。注意:提供的which和keyCode属性仅用于兼容性。最新版本的DOM事件规范建议使用key属性(如果可用)。获取按下的键盘键的Unicode值:
尝试一下var x = event.which;
-
浏览器支持
项 IE/Edge Chrome FireFox Safari Opera 属性 which 9.0+支持支持支持支持 -
语法
event.which -
技术细节
项目 描述 返回值: 一个数字,表示Unicode字符代码或Unicode密钥代码 DOM版本 DOM Event Level 2 -
更多例子
使用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; }
如果用户按下Escape键,则提醒一些文本:
尝试一下<input type="text" onkeydown="myFunction(event)"> function myFunction(event) { var x = event.which || event.keyCode; // event.keyCode用于IE8及更早版本 if (x == 27) { // 27 is the ESC key alert ("You pressed the Escape key!"); } }
将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属性