ASCII到键码转换器

ASCII to keycode converter

本文关键字:转换器 键码 ASCII      更新时间:2023-10-31

是否存在将ASCII转换为keypresskeyupkeydown dom事件返回的keyCode的JavaScript/jQuery脚本?

我想的是:

"A".toKeycode

编辑:我在问是否有人制作了一些脚本,可以将所有ASCII字符转换为正确的键代码。因此" ".toKeycode也应该起作用。

根据我的经验,String.fromCharCode(e.keyCode)是不可靠的。String.fromCharCode需要unicode charcode作为参数;e.keyCode返回javascript键代码。Javascript键代码和unicode字符代码不是一回事!特别是,数字键盘键返回的键代码与普通数字键不同(因为它们是不同的键),而大小写字母返回的键码相同(在两种情况下都按了同一个键),尽管它们具有不同的charcode。

例如,普通数字键1生成具有键代码49的事件,而数字键盘键1(打开数字锁)生成键代码97。与String.fromCharCode一起使用,我们得到以下结果:

String.fromCharCode(49)返回"1"String.fromCharCode(97)返回"a"String.fromCharCode需要unicode charcode,而不是javascript keycode。该键生成一个键代码为65的事件,与它将生成的字符的大小写无关(如果在事件中按下shift键等,也有一个修饰符)。字符"a"的unicode代码为61,而字符"a"的代码为41(例如,http://www.utf8-chartable.de)。然而,这些都是十六进制值,转换为十进制会为"a"提供65的charcode,为"a"提供97的charcode。1这与我们从String.fromCharCode中获得的这些值一致。

我自己的要求仅限于处理数字和普通字母(根据字符串中的位置接受或拒绝),并允许控制字符(F键、ctrl之类)通过。因此,我可以检查控制字符,如果它不是控制字符,我会根据范围进行检查,只有这样我才需要获得实际的字符。考虑到我不担心大小写(无论如何,我都会将所有字母改为大写),并且已经限制了键代码的范围,我只需要担心数字键盘键。以下内容就足够了:

String.fromCharCode((96<=key&&key<=105)?键-48:键)一般来说,一个可靠地从charcode返回字符的函数会很好(可能是作为jQuery插件),但我现在没有时间写它。很抱歉

我还提到e.which(如果您使用的是jQuery),它将e.keyCode和e.charCode规范化,这样您就不必担心按下了哪种键。将其与String.fromCharCode结合的问题仍然存在。

1我有一段时间很困惑。所有的文档都说String.fromCharCode需要unicode charcode,而在实践中,它似乎适用于ASCII charcode,但我认为这是因为需要从十六进制转换为十进制,再加上ASCII charcode和unicode decimal charcode在普通拉丁字母中重叠。