JavaScript HTML DOM which 事件属性

  • which 事件属性

    which属性返回触发onkeypress事件的键的Unicode字符代码,或触发onkeydownonkeyup事件的键的Unicode键代码。两种代码类型之间的区别:
    • 字符代码 - 表示ASCII字符的数字
    • key代码 - 表示键盘上实际密钥的数字
    这些类型并不总是意味着同样的事情。例如,小写字母“w”和大写字母“W”具有相同的键盘代码,因为键盘上按下的键是相同的(只是“W”=数字“87”),但是不同的字符代码,因为结果字符不同(“w”或“W”,即“119”或“87”) - 请参阅下面的“更多示例”以更好地理解它。
    提示:要确定用户是否按了可打印的键(例如“a”或“5”),建议在onkeypress事件中使用此属性。要确定用户是否按下了功能键(例如“F1”,“CAPSLOCK”或“Home”),请使用onkeydownonkeyup事件。
    注意: IE8及更早版本不支持哪个属性。对于这些浏览器版本,您可以使用keyCode属性。但是,keyCode属性不适用于Firefox中的onkeypress事件。对于跨浏览器解决方案,您可以使用以下代码:
    var x = event.which || event.keyCode;  // 使用which或keyCode,具体取决于浏览器支持
    
    提示:有关所有Unicode字符的列表,请参阅我们的 完整Unicode参考。
    提示:如果要将返回的Unicode值转换为字符,请使用fromCharCode()方法。
    注意:此属性是只读的。
    注意:提供的whichkeyCode属性仅用于兼容性。最新版本的DOM事件规范建议使用key属性(如果可用)。
    提示:如果要确定在发生键事件时是否按下了“ALT”,“CTRL”,“META”或“SHIFT”键,请使用altKeyctrlKeymetaKeyshiftKey属性。
    获取按下的键盘键的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属性