keydown 事件的键码

Posted

技术标签:

【中文标题】keydown 事件的键码【英文标题】:keycode on keydown event 【发布时间】:2010-12-11 12:17:51 【问题描述】:

我正在使用 keydown 事件

我在哪里获取密钥代码并将其转换为字符代码。

但是我遇到了一个问题,在键盘上按2 它给出50 和字符代码2

当我在小键盘中按2 时,它会给出键码98,所以当我转换字符码时a

【问题讨论】:

【参考方案1】:

这是因为您使用keyCode 成员,例如,小写字母“a”和大写字母“A”具有相同的 keyCode,因为是相同的键,但不同的 charCode 因为结果性格不一样。

要获取 charCode,您应该使用keypress 事件,并获取event.charCode 成员(如果可用),否则,您将获得event.keyCode,对于 IE,keypress 事件具有正确的信息。

看看下面的example:

document.onkeypress = function (e)  
  e = e || window.event; 
  var charCode = e.charCode || e.keyCode, 
      character = String.fromCharCode(charCode); 

  alert(character);
;

【讨论】:

使用此代码:当我输入“2”时,我得到 charCode 0;键码 50;字符 2;当我输入 Shift-2 时,我得到了相同的结果,但在我的文本框中出现了“@”。 onkeypress 事件似乎不知道您的 Shift 键是否按下....【参考方案2】:

只需查看这些解决方案similar 即可满足您的要求

对于键码参考use this

键码取决于浏览器check it

【讨论】:

【参考方案3】:

您将在keypress 事件中获得字符代码 试试这个:http://www.w3.org/2002/09/tests/keys.html

他们使用以下代码转换为字符:

var charCode = (evt.charCode) ? evt.charCode : evt.keyCode;

this 作为键码参考也可能会有所帮助

【讨论】:

以上是关于keydown 事件的键码的主要内容,如果未能解决你的问题,请参考以下文章

为什么这个程序中的运动仍然伴随着keydown事件的发射?

WM_KEYDOWN 如何处理不同的键?

如何从 WPF 页面触发 KeyDown 事件

js keyupkeypress和keydown事件 详解

js keyupkeypress和keydown事件 详解

JQuery——键盘事件.keydown().keyup()和.keypress()