下面的代码接受一个字符并使用keycode(String.fromCharCode)打印字符。当您输入.
或?
等特殊字符时会出现问题。
function logChar(e){
var keyCode = e.which || e.keyCode;
var char = String.fromCharCode(keyCode);
console.log(char)
}
<input type="text" onkeydown="logChar(event)" />
有人可以解释为什么它会返回不同的值以及如何获得相同的值?
提前致谢!
答案 0 :(得分:3)
这是因为keyCode
和charCode
不同。 String.fromCharCode
假设输入是unicode(因此A是65),而对于字母和数字键,它们将匹配...排序。你会发现&#39; a&#39;和&#39; A&#39;作为一个keyCode都是65,但是&#39; a&#39;是97!因此,keyCode只是您按下的键盘上的实际键的标识符,并且不是unicode。
这就是为什么小键盘0-9也给出了不同的代码。如果要映射按键,请使用this之类的网站。但请注意,你永远不会再获得确切的角色了。