Javascript String.charCodeAt(索引)和keyCodes

Javascript String.charCodeAt(索引)和keyCodes,javascript,Javascript,可能重复: String.charCodeAt(index)的返回值与JavaScript键代码之间有什么区别?有没有办法在两者之间进行转换 例如: console.log('.'.charCodeAt(0)); // prints 46 on Mac/Chrome 但是“.”的键码是190。字符串。charCodeAt(索引)用于返回指定位置字符串字符的ascii值 keyCode是所按键盘键的值的浏览器实现。不幸的是,它也不是所有浏览器都标准化的 编辑: String.fromChar

可能重复:

String.charCodeAt(index)
的返回值与JavaScript键代码之间有什么区别?有没有办法在两者之间进行转换

例如:

console.log('.'.charCodeAt(0));  // prints 46 on Mac/Chrome
但是“.”的键码是190。

字符串。charCodeAt(索引)用于返回指定位置字符串字符的ascii值

keyCode是所按键盘键的值的浏览器实现。不幸的是,它也不是所有浏览器都标准化的

编辑:

String.fromCharCode(unicodeValue)

这将把unicode值(如keyCode)转换为ascii值。请注意,并非所有的keyCode值都将转换为适当的ascii值(因为没有一个),例如{delete、up、down、left、right、home、insert、page up、page down}


示例:如果执行
alert(String.fromCharCode(46)),则按Delete键返回键代码46
您将看到它输出一个句点,因为46是一个句点的ascii值。

与onkeydown和onkeydup不同,
onkeypress
事件实际上返回一个
charCode
属性,可以使用
字符串将其转换为字符表示形式。fromCharCode

input.onkeypress = function(e) {
     var char = String.fromCharCode(e.charCode);
}
还可以查看此链接,了解有关不同浏览器和平台上的keyCodes/charcode的一些好的研究


第一个是ASCII表中的位置,第二个是键盘键代码值。我不会说这是重复的,因为链接的问题没有询问如何在两者之间转换。更具体地说,如果我有一个字符,如何在任何给定的浏览器中获取其keycode?是否有一个函数可以从keycode转换为charCode,反之亦然?jQuery实现了一个名为
event的keycode版本。它将
添加到回调方法的事件对象中。它规范化这些键代码,以便它们在jQuery支持的所有浏览器和版本中保持一致。这是最困难的部分。。。然后,您只需要编写一个映射函数,将其映射到
事件上正确的ascii值.api文档。AndrewEisenberg为您做了一些挖掘工作。阅读对我的答案的编辑。keyCodes不是unicode值,并且
fromCharCode
不会转换为ascii(这将更加有限),而是转换为字符串。