取消 HTML 中的 keydown
如何取消键盘上特定键的 keydown
,例如 HTML 页面中的(空格、回车和箭头
)。
How can I cancel the keydown
of a specific key on the keyboard, for example(space, enter and arrows
) in an HTML page.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果您只对您提到的示例按键感兴趣,则可以使用
keydown
事件,但对于旧版、Blink 之前的 Opera 版本(至少包括版本 12)除外,您可以在其中使用您需要取消keypress
事件。在keydown
事件中比在keypress
事件中可靠地识别不可打印的按键要容易得多,因此下面使用一个变量在keydown
中设置> 处理程序告诉keypress
处理程序是否抑制默认行为。使用
addEventListener
并忽略旧版 Opera 的示例代码2010 年的原始示例代码
If you're only interested in the example keys you mentioned, the
keydown
event will do, except for older, pre-Blink versions of Opera (up to and including version 12, at least) where you'll need to cancel thekeypress
event. It's much easier to reliably identify non-printable keys in thekeydown
event than thekeypress
event, so the following uses a variable to set in thekeydown
handler to tell thekeypress
handler whether or not to suppress the default behaviour.Example code using
addEventListener
and ignoring ancient version of OperaOriginal example code from 2010
捕获 keydown 事件并返回 false。它应该是这样的:(
在这里看到)
键码定义 此处
编辑:更新我的答案以在 IE 中工作
Catch the keydown event and return false. It should be in the lines of:
(seen here)
The keycodes are defined here
edit: update my answer to work in IE
这当然是非常古老的线程。
为了在 IE10 和 FireFox 29.0.1 上发挥魔法,您绝对必须在
keypress
(而不是keydown
)事件侦听器函数中执行此操作:This is certainly very old thread.
In order to do the magic with IE10 and FireFox 29.0.1 you definitely must do this inside of
keypress
(notkeydown
) event listener function:jQuery 有一个很好的 KeyPress 函数,它允许您检测按键,那么它应该只是一个检测键值并对要忽略的键值执行 if 的情况。
编辑:
例如:
jQuery has a nice KeyPress function which allows you to detect a key press, then it should be just a case of detecting the keyvalue and performing an if for the ones you want to ignore.
edit:
for example:
只需返回 false 即可。请注意,这在 Opera 上不起作用。您可能想使用 onkeyup 来代替并检查最后输入的字符并处理它。
或者更好地使用 JQuery KeyPress
Just return false. Beware that on Opera this doesn't work. You might want to use onkeyup instead and check the last entered character and deal with it.
Or better of use JQuery KeyPress
我只为 IE 开发,因为我的工作需要它,所以有我的数字字段代码,不美观,但工作得很好
I only develop for IE because my works requires it, so there is my code for numeric field, not a beauty but works just fine