which 事件属性

返回上一级

HTML DOM 的 which 属性返回 onkeypress 事件触发的键的值的字符代码,或者 onkeydownonkeyup 事件的键的代码

语法

event.which

浏览器支持

Yes 9.0+ Yes Yes Yes

说明

两种代码类型的区别是

  • 字符代码 - 表示 ASCII 字符的数字
  • 键盘代码 - 表示键盘上真实键的数字

两种类型的值不是都相等的,例如小写字符 "w" 和大写字符 "W" 有相同的键盘代码,因为它们键盘上 ( "W" 代码为 "87"),但是它们有不同的字符代码,两个字符输出是不一样的( "w" 和 "W" 字符代码为 "119" 和 "87") - 查看以下实例可以更好的理解

如果需要知道用户按下的是打印键 (如
"a" 或 "5"),建议使用 onkeypress 事件

如果需要知道用户按下的是功能键(如 "F1", "CAPS LOCK" 或 "Home") 可使用 onkeydown 或 onkeyup 事件

在 Firefox 中,, keyCode 属性在 onkeypress 事件中是无效的 (返回 0)。浏览器兼容问题,可以一起使用 which 和 keyCode 属性来解决

// 使用 which 或 keyCode , 这样可支持不同浏览器
var x = event.which || event.keyCode;

所有 Unicode 字符列表可查看我们的 完整 Unicode 参考手册

如果需要将 Unicode 值转换为字符,可以使用 fromCharCode() 方法

该属性是只读的

which 和 keyCode 属性提供了解决浏览器的兼容性的方法,最新版本的 DOM 事件推荐使用 key 属性来替代该方法

如果想查看是否按下了 "ALT", "CTRL", "META" 或 "SHIFT" 键,可使用 altKey , ctrlKey , metaKeyshiftKey 属性

范例

获取按下的键盘按键 Unicode 值

var x = event.which;

运行范例 »

范例

使用 onkeypress 和 onkeydown 来演示字符代码与键盘代码的区别

<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)">
<script>
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;
}
</script>

运行范例 »

范例

如果按下 Esc 键弹出提示信息

<input type="text" onkeydown="myFunction(event)">
<script>
function myFunction(event) {
    var x = event.which || event.keyCode; // event.keyCode 用于 IE8 及更早版本    
    if (x == 27) {
        // 27 是 ESC 键
        alert ("You pressed the Escape key!");
    }
}
</script>

运行范例 »

范例

将 Unicode 值转换为字符 (不能用于功能键)

var x = event.which || event.keyCode;   // 获取  Unicode 值
var y = String.fromCharCode(x);         // 将值转换为字符

运行范例 »

相关页面

HTML DOM 参考手册: key 事件属性

HTML DOM 参考手册: keyCode 事件属性

HTML DOM 参考手册: charCode 事件属性

返回上一级

JavaScript 参考手册

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.