Javascript 按键被弃用,如何获得用户键入的字符?
javascriptJavascript 按键被弃用,如何获得用户键入的字符?,javascript,keypress,keydown,keycode,Javascript,Keypress,Keydown,Keycode,javascriptkeypress事件已被弃用: 有些人建议只依赖于按键事件,例如: Keydown是我们唯一需要的键盘事件 问题在于keydown和keypress不是同义词。关键是,在许多/大多数情况下,它们不会返回相同的字符Keydown表示按下了键盘上的哪个键,而keypress表示用户实际键入的字符 在英语中,区分下列情况很重要: letter = String.fromCharCode(event.which); 按键盘上的“a”键时,字母在按下键时为“a”,但在按下键时为
keypress
事件已被弃用:有些人建议只依赖于
按键
事件,例如:Keydown
是我们唯一需要的键盘事件问题在于
keydown
和keypress
不是同义词。关键是,在许多/大多数情况下,它们不会返回相同的字符Keydown
表示按下了键盘上的哪个键,而keypress
表示用户实际键入的字符
在英语中,区分下列情况很重要:
letter = String.fromCharCode(event.which);
按键盘上的“a”键时,字母在按下键时为“a”,但在按下键时为“a”
JCK语言的情况变得更加复杂,因为keypress
接收国际键盘布局的正确字符,而keydown
将所有内容转换为单字节字符
keydown和keyup事件现在在IME合成期间触发:
因此,随着keypress
被弃用,考虑到大小写、非ASCII字符和多字节字符,当我们关心用户想要键入的字符时,应该使用什么
相关问题和参考资料:
=>答案建议使用按键
=>答案建议使用按键
=>答案指出,keypress
和keydown
事件不能互换
=>答案建议使用keydown
,而不注意它在处理字母大小写、非ascii字符和多字节字符方面的区别。
此外,建议的备选方案beforeinput
似乎没有任何浏览器支持
=>问题被简要否决,有一条评论建议在输入之前使用keydown
或beforeinput
,但未解决上述任何缺陷 在输入前使用或键下键
而不是键下键
,然后阅读而不是键下键
或键下键
(这两种键在几年前都已被弃用)。@Teemu谢谢!我试试看。您可以将此作为一个答案发布,无论是否带有示例代码,因为我所做的所有研究都让我找到了多年的解决方案,而我未能从链接参考和我参考的其他搜索结果中理解正确的解决方案。我确信我不是唯一一个在这方面苦苦挣扎的人,正如链接的被否决的问题所表明的那样。keydown
和event.key
似乎确实是一条路要走,除了需要更多的额外代码之外,因为现在当用户键入“a”时,我会得到输出“ShiftA”。。。我会弄明白的,最终…;)输出不是“ShiftA”,而是“Shift”和“A”,这两个键击的自身输出。对于除基本ASCII码以外的旧代码,您得到了可靠的结果,数字数据表示键在键盘上的位置,而不是字符。无论如何,从key
属性检查不可打印字符相对容易,只需检查长度,如果大于1,则该字符不可打印。