keycode和charcode

53 javascript jquery

为什么人们会写出类似的陈述

e.keyCode ? e.keyCode : e.charCode
Run Code Online (Sandbox Code Playgroud)

有些人也用 e.which

有人可以解释一下吗?

Tim*_*own 98

始终如一地处理关键事件并非易事.

首先,有两种不同类型的代码:键盘代码(表示用户按下的键盘上的键的数字)和字符代码(表示Unicode字符的数字).您只能在keypress事件中可靠地获取字符代码.不要试图获取字符代码keyupkeydown事件.

其次,您可以在keypress事件中获得不同的值集,以及您在事件keyupkeydown事件中获得的值.

我推荐此页面作为有用的资源.作为总结:

如果您对检测用户键入字符感兴趣,请使用该keypress事件.IE奇怪地只存储字符代码,keyCode而所有其他浏览器都存储它which.一些(但不是全部)浏览器也将其存储在charCode和/或中keyCode.一个示例按键处理程序:

function(evt) {
  evt = evt || window.event;
  var charCode = evt.which || evt.keyCode;
  var charStr = String.fromCharCode(charCode);
  alert(charStr);
}
Run Code Online (Sandbox Code Playgroud)

如果您对检测不可打印的键(例如光标键)感兴趣,请使用该keydown事件.这里keyCode总是使用的属性.请注意,keyup事件具有相同的属性.

function(evt) {
  evt = evt || window.event;
  var keyCode = evt.keyCode;

  // Check for left arrow key
  if (keyCode == 37) {
    alert("Left arrow");
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @bhavya_w:支持旧版本的Internet Explorer(版本8及更早版本),它将字符代码存储在`keyCode`中,不支持`which`属性.有关详细信息,请参见http://unixpapa.com/js/key.html. (2认同)

rah*_*hul 9

这是一个条件声明.

如果浏览器支持e.keyCode,则使用e.keyCode else e.charCode.

它类似于

var code = event.keyCode || event.charCode
Run Code Online (Sandbox Code Playgroud)

event.keyCode:返回按键事件中的非字符键的Unicode值或任何其他类型的键盘事件中的任何键.

event.charCode:返回按键事件期间按下的字符键的Unicode值.

  • 这可以写成一行代码:`var keyCode = event.keyCode || event.charCode`. (9认同)

She*_*yan 5

好的,这里是解释。

e.keyCode-用于获取代表键盘上键的数字

e.charCode-一个数字,代表键盘上按键的unicode字符

e.which-(特定于jQuery)是jQuery中引入的属性(请勿在纯JavaScript中使用)

以下是获取keyCode和charCode的代码段

<script>
// get key code
function getKey(event) {
  event = event || window.event;
  var keyCode = event.which || event.keyCode;
  alert(keyCode);
}

// get char code
function getChar(event) {
  event = event || window.event;
  var keyCode = event.which || event.keyCode;
  var typedChar = String.fromCharCode(keyCode);
  alert(typedChar);
}
</script>
Run Code Online (Sandbox Code Playgroud)

在JavaScript获取keyCode和charCode的实时示例。