我正在使用 keydown
事件。
在此事件中,我获取键码并将其转换为字符码。
但是,当我按下键盘上的数字键 2
时,它会给出键码 50
和字符码 2
,这给我带来了问题。
当我在小键盘上按下数字键 2
时,它会给出键码 98
,所以当我转换字符码时,它会变成字符 a
。
我正在使用 keydown
事件。
在此事件中,我获取键码并将其转换为字符码。
但是,当我按下键盘上的数字键 2
时,它会给出键码 50
和字符码 2
,这给我带来了问题。
当我在小键盘上按下数字键 2
时,它会给出键码 98
,所以当我转换字符码时,它会变成字符 a
。
这是因为您正在使用 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);
};
在 keypress
事件中,您将获得字符代码
试试这个:http://www.w3.org/2002/09/tests/keys.html
他们使用以下代码进行转换:
var charCode = (evt.charCode) ? evt.charCode : evt.keyCode;
this 也许可以作为按键代码参考资料