【问题标题】:How do I get the character pressed in a textarea如何在文本区域中按下字符
【发布时间】:2012-01-20 19:57:14
【问题描述】:

这真的很奇怪。

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

当我按下 "(" 时,按键会以 e.keyCode == e.which == 40 触发

当我按下箭头键时,keyup 会使用 e.keyCode == e.which == 40 触发

为什么这么奇怪?

【问题讨论】:

  • ( 你的意思是按住 shift 并按 9,对吗?
  • 您使用的是哪个浏览器?使用带有 jquery 的 chrome 按键,我无法捕获箭头键。 ( 确实给了我 40,这是那个字符的 ascii 代码。

标签: javascript jquery


【解决方案1】:

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

“(”的字符代码是 40 (keypress event),向下箭头的键代码也是 40 (keyup)。

试试:

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

【讨论】:

    【解决方案2】:

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

    浏览器已经实现了向 Javascript 运行时表示特殊键输入的不同方式。详情是explained here

    我通常在检测箭头键时使用“keydown”事件,因为此事件附加了正确的键码,并且当用户键入左括号时会使用不同的键码(9 的键码)触发。如果您希望允许用户通过按住箭头键来重复键控事件,这可能不起作用。

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多