首页 > 解决方案 > 字母数字键的编辑器按键锁定

问题描述

我正在开发一个编辑器项目,并在常用的编辑器中实现了用于字母数字键输入的 UX 在 keyDown 上注册一次,因为其他键在 keyDown 上很简单。例如。如果你a按住,它会插入a,但.它会插入......。所以我的实现是这样的:

let keydownLock = false
const onKeyUp = () => { keydownLock = false }
const onKeyDown = () => {
  if (keydownLock) return
  if (isAlphanumeric) keydownLock = true
  other key handling...
}

我的问题是:

  1. 如果这是用于键输入的编辑器标准 UX,请指点我一些参考资料。
  2. 是否有一些特殊的关键事件可以更容易地实施?

更新:我意识到这是所有内容可编辑的 HTML 元素的标准行为。所以不需要实现任何东西。但我的第一个问题仍然存在。

标签: javascripteventseditor

解决方案


根据我从您的问题中了解到的情况,基本上在 Javascript 中,onkeypress 事件类似于 onkeydown 事件,但它不会针对所有浏览器中的所有键类型触发。

如果要取消键盘输入,最好同时取消 onkeydown 和 onkeypress 事件,因为有时需要取消 onkeypress/onkeydown 事件,具体取决于浏览器和按下键的类型。例如,如果要取消光标的左、上、右、下键,在 Internet Explorer、Firefox、Google Chrome 和 Safari 中需要取消 onkeydown 事件,在 Opera 中需要取消 onkeypress 事件。对于字母数字字符,取消 onkeydown 和 onkeypress 事件之一就足够了。


推荐阅读