which 事件属性
获取按下的键盘按键Unicode值:
<p>在输入框中输入键盘上的字符获取按下字母的 Unicode 字符代码。</p> <input type="text" size="40" onkeypress="myFunction(event)"> <p id="demo"></p> <p><strong>注意:</strong> IE8 及更早版本不支持该属性。</p> <script> function myFunction(event) { var x = event.which; document.getElementById("demo").innerHTML = " Unicode 值为:" + x; } </script>
本文底部包含了更多实例。
定义和使用
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; // 使用 which 或 keyCode, 这样可支持不同浏览器
提示: 如果你需要将 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 来演示字符代码与键盘代码的区别:
<p>在输入框中输入键盘上的字母获取按下字母的 Unicode 字母代码和 Unicode 键代码 。</p> <p><strong>注意:</strong> which 和 keyCode 属性不能用于onkeypress的非打印事件,功能键 (如 CAPS LOCK, CTRL, ESC, F12, 等)。</p> <input type="text" size="50" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)"> <p>onkeypress - <span id="demo"></span></p> <p>onkeydown - <span id="demo2"></span></p> <script> function uniCharCode(event) { var char = event.which || event.keyCode; document.getElementById("demo").innerHTML = " Unicode 字符代码为: " + char; } function uniKeyCode(event) { var key = event.which || event.keyCode; document.getElementById("demo2").innerHTML = " Unicode 键代码为: " + key; } </script>
如果按下 Esc 键弹出提示信息:
<p>在输入框中按下 Esc 键(左上角)会弹出提示信息。</p> <input type="text" size="50" onkeydown="myFunction(event)"> <script> function myFunction(event) { var x = event.which || event.keyCode; if (x == 27) { alert("你按下了 Esc 键!"); } } </script>
将 Unicode 值转换为字符 (不能用于功能键):
<p>在输入框中按下键盘上的按键获取字符和数字。 </p> <input type="text" size="40" onkeypress="myFunction(event)"> <p id="demo"></p> <script> function myFunction(event) { var x = event.keyCode || event.which; // 获取 Unicode 值 var y = String.fromCharCode(x); // 将值转换为字符 document.getElementById("demo").innerHTML = "数字: " + x + " = 字符: " + y; } </script>
相关页面
HTML DOM 参考手册: key 事件属性
HTML DOM 参考手册: keyCode 事件属性
HTML DOM 参考手册: charCode 事件属性