首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

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
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1444477

复制
相关文章

相似问题

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