按下事件中的按键代码

8

我正在使用 keydown 事件。

在此事件中,我获取键码并将其转换为字符码。

但是,当我按下键盘上的数字键 2 时,它会给出键码 50 和字符码 2,这给我带来了问题。

当我在小键盘上按下数字键 2 时,它会给出键码 98,所以当我转换字符码时,它会变成字符 a

3个回答

13

这是因为您正在使用 keyCode 成员,例如小写字母 'a' 和大写字母 'A' 具有相同的 keyCode 值,因为它们使用的是同一个键,但是它们对应不同的 charCode 值,因为它们生成的字符不同。

要获取 charCode 值,您应该使用 keypress 事件,并获取 event.charCode 成员(如果可用),否则在 IE 上,在 keypress 事件中获取 event.keyCode 就可以得到正确的信息。

请参考以下示例

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

  alert(character);
};

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

2

请看这些与您需求类似的解决方案(链接)

并且需要查看键码参考,请使用此链接

键码取决于浏览器,请检查


1

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

他们使用以下代码进行转换:

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

this 也许可以作为按键代码参考资料


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接