我如何得到字符按在一个文本区

How do I get the character pressed in a textarea

本文关键字:一个 文本区 何得 字符      更新时间:2023-09-26

这真的很奇怪。

我有一个文本区。我监听keyup和keypress事件。

当我按"("时,keypress被触发,e.keyCode == e.which == 40

当我按下箭头向下键时,keyup被触发,e.keyCode == e.which == 40

为什么这么奇怪?

keydownkeyup事件提供了一个代码,表示按下了哪个,而keypress事件则表示输入了哪个字符

"("的字符代码为40 (keypress事件),向下箭头的键代码也为40 (keyup)。

试题:

String.fromCharCode(40); // "("

传统上,箭头键与ASCII码重叠,但对程序员来说是用两个字节的序列表示的,因此您可以知道按下了一个特殊的键。随着Unicode的出现,这不再是一个干净的解决方案。

浏览器已经实现了不同的方式来表示Javascript运行时的特殊键输入。细节在这里解释。

我通常在检测箭头键时使用'keydown'事件,因为该事件附加了正确的键码,并且当用户键入左括号时将使用不同的键码(9)。如果您想让用户通过按住箭头键来重复键入的事件,那么这可能不起作用。