【问题标题】:Differences between input and keyPress eventsinput 和 keyPress 事件的区别
【发布时间】:2019-10-21 09:02:00
【问题描述】:

我了解在 Javascript 中,“keypress”事件会在字符插入屏幕时触发,而“input”事件会在您的输入字段更改时触发。我已经看到很多对不同类型事件的很好解释,例如here,但我更想知道这两个事件之间的区别,因为它们看起来非常相似。具体来说:

  • 按键事件和输入事件之间有什么区别(如果有的话)?在我的快速测试中,似乎按键首先发生,但是是这样吗?
  • 在什么情况下我会使用其中一种?

【问题讨论】:

  • keypress 并不总是导致输入,某些按钮不会产生可见字符(如 alt)
  • The keypress event is deprecated,只有一个区别。
  • documentation 准确地描述了这些事件的作用,很容易从第一句话中看出差异。

标签: javascript events


【解决方案1】:

所以实际上这两个事件根本不一样。让我为你分解一下。

  • keypress 事件在您按下任意键盘键时触发,与您关注的元素无关。如果您在空白 html 页面上按下某个键,则会触发该事件。此事件主要用于触发事件,例如当有一个弹出窗口并且您按下 Escape 时,它​​会隐藏它。
  • input 事件特定于您当前在聚焦输入元素时键入或按下键的情况。有了它,您实际上可以获取输入值并对其进行处理,例如在表单中检查密码是否包含符号、大写字母和数字。

这就是这两个事件之间的区别。它们根本没有相同的用途。

【讨论】:

  • 附带说明,如果您将其用作事件侦听器,最好使用 keypressup 而不是 keypressdown,因为用户可以无限期按住某个键,这将导致事件侦听器触发反复:)
  • 正确,但取决于用例。如果您确实需要在按下键时重复某个操作,则 Keypressdown 可以发挥作用。
  • @Rich 你在说keyupkeydown吗?因为没有keypressupkeypressdown 事件,AFAIK。
  • 是的,我的错。这是漫长的一天:)
【解决方案2】:

回答关于何时使用 keyDown 或 keyUp 与输入的问题:

  1. 游戏的导航控件
  2. 不改变文本的键。例如,使用 keyDown 来检测“esc”或“F1”是否被按下。我通常使用'esc'的keyDown检测来关闭弹出窗口

【讨论】:

    猜你喜欢
    • 2016-11-24
    • 1970-01-01
    • 2018-02-19
    • 2013-06-07
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多