根据我的经验是不可靠的。 期望 unicode 字符代码作为参数; 返回 javascript 键代码。Javascript键码和Unicode字符码不是一回事!特别是,数字键盘键返回与普通数字键不同的键(因为它们是不同的键),而对于两者和字母返回相同的键(您在两种情况下都按了相同的键),尽管它们具有不同。String.fromCharCode(e.keyCode)
String.fromCharCode
e.keyCode
keycode
keycode
upper
lowercase
charcodes
例如,普通数字键 1 生成一个包含 49 的事件,而数字键盘键 1(带 on)生成 97。与我们一起使用,我们得到以下结果:keycode
Numlockkeycode
String.fromCharCode
String.fromCharCode(49) returns "1"
String.fromCharCode(97) returns "a"
String.fromCharCode
需要 unicode 字符代码,而不是 javascript 键代码。键生成一个 a 为 65 的事件,与它将生成的字符的大小写无关(在事件中是否按下键等,还有一个修饰符)。字符的 unicode 为 61,而字符的 unicode 为 41(例如,根据 http://www.utf8-chartable.de/)。但是,这些是值,转换为十进制后,“A”的值为65,“a”为97。[1] 这与我们从这些值中获得的一致。akeycode
Shiftacharcode
Acharcode
hex
charcode
String.fromCharCode
我自己的要求仅限于处理数字和普通字母(根据字符串中的位置接受或拒绝),并让控制字符(-键,-某物)通过。因此,我可以检查控件字符,如果它不是控制字符,我会根据范围进行检查,然后我才需要获取实际字符。鉴于我不担心大小写(无论如何我都会将所有字母更改为大写字母),并且已经限制了键码的范围,我只需要担心数字键盘键。以下就足够了:FCtrl
String.fromCharCode((96 <= key && key <= 105)? key-48 : key)
更一般地说,一个从a可靠地返回字符的函数会很棒(也许作为一个jQuery插件),但我现在没有时间写它。不好意思。charcode
我还要提到(如果您使用的是jQuery),它规范化和,这样您就不必担心按下了哪种键。将其与仍然存在的问题仍然存在。e.which
e.keyCode
e.charCode
String.fromCharCode
[1] 我有一段时间感到困惑 -.所有文档都说 期望一个 unicode ,而在实践中它似乎适用于ASCII字符代码,但我认为这是由于需要从十六进制转换为十进制,再加上ASCII字符代码和Unicode十进制字符代码重叠用于普通拉丁字母的事实。String.fromCharCode
charcode