Javascript String.charCodeAt(index)和keyCodes

时间:2013-01-24 19:00:42

标签: javascript

  

可能重复:
  Javascript KeyCode vs CharCode = Utter Confusion

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

例如:

console.log('.'.charCodeAt(0));  // prints 46 on Mac/Chrome

但是'。'的keyCode是190。

2 个答案:

答案 0 :(得分:2)

string.charCodeAt(index)旨在返回指定位置的字符串字符的ascii值。

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

修改

String.fromCharCode(unicodeValue);

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

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

答案 1 :(得分:1)

与onkeydown和onkeyup不同,onkeypress事件实际上会返回charCode属性,可以使用String.fromCharCode

将其转换为其字符表示形式
input.onkeypress = function(e) {
     var char = String.fromCharCode(e.charCode);
}

另请查看此链接,了解有关不同浏览器上的keyCodes / charCodes的一些优秀研究。平台

http://unixpapa.com/js/key.html