首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >keycode和charcode

keycode和charcode
EN

Stack Overflow用户
提问于 2009-09-18 13:12:48
回答 6查看 103.6K关注 0票数 55

为什么人们会写这样的语句

代码语言:javascript
复制
e.keyCode ? e.keyCode : e.charCode

有些人还使用e.which

有没有人能解释一下?

EN

回答 6

Stack Overflow用户

发布于 2009-09-18 15:21:17

始终如一地处理关键事件并不容易。

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

其次,在keypress事件中获得的值集合与在keyupkeydown事件中获得的值集合不同。

我推荐this page作为一个有用的资源。总结一下:

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

代码语言:javascript
复制
function(evt) {
  evt = evt || window.event;
  var charCode = evt.which || evt.keyCode;
  var charStr = String.fromCharCode(charCode);
  alert(charStr);
}

如果您对检测不可打印的键(比如光标键)感兴趣,那么可以使用keydown事件。这里,keyCode始终是要使用的属性。请注意,keyup事件具有相同的属性。

代码语言:javascript
复制
function(evt) {
  evt = evt || window.event;
  var keyCode = evt.keyCode;

  // Check for left arrow key
  if (keyCode == 37) {
    alert("Left arrow");
  }
}
票数 101
EN

Stack Overflow用户

发布于 2009-09-18 13:17:16

它是一个条件语句。

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

它类似于

代码语言:javascript
复制
var code = event.keyCode || event.charCode

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

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

票数 10
EN

Stack Overflow用户

发布于 2015-12-12 10:10:02

好了,这里有一些解释。

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

e.charCode -表示键盘上键的unicode字符的数字。

e.which -(特定于jQuery )是jQuery中引入的属性(不要在纯javascript中使用)

下面是获取keyCode和charCode的代码片段

代码语言:javascript
复制
<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>

Getting keyCode and charCode in JavaScript的实时示例。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1444477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档