我对keypress、keydown和keyup的各种行为感到困惑。似乎我错过了一份重要的文档,该文档解释了这三人组的微妙之处和细微差别。有人可以帮我弄清楚我需要阅读哪个文件才能更有效地使用这些事件吗?如果您需要详细信息,请参见下文。
@ov:你让我展示一些代码,但这并不是我试图解决的代码中的一个具体问题。我试图掌握这些事件处理程序的行为,并要求了解它们的人向我指出一份好的文档。
我使用 jQuery 构建输入表单并将其插入到我的文档中。它工作得很好,主要是。我希望表单像我看到的大多数其他输入表单一样响应键盘:esc键应该像单击取消按钮一样关闭表单,并且由于表单上有一个<textarea>
,cmd+enter应该与单击相同确定按钮。使用keypress事件似乎很简单。问题是 Chrome 没有调用我的keypress处理程序来获取esckey 或cmd+ enter。它会触发ctrl+enter和option+enter以及字母数字,但不会触发cmd+ enter。
所以我会改用keyup。我得到keyup for esc,keyup for cmd,keyup for enter,太棒了。但是当我按住时我没有得到键的键位。entercmd
第三次的魅力,你可能认为keydown似乎工作,但使用keydown,你会得到重复键。我知道,您所要做的就是在第一次调用时取消绑定处理程序,但是这三种不同的事件类型的行为如此不同似乎很奇怪。为什么是这样?那里有我显然没有读过的明显文件吗?