【发布时间】:2014-01-21 19:57:28
【问题描述】:
标题几乎解释了它,但我只是想知道是否有一种方法可以使用 keyup 告诉我的代码对@做出反应,但不是 2...与 # 和 3 相同。
现在它为我提供了相同的 2 和 @ 键码,这会导致一些不良行为。
有人知道魔法吗?
更新 - 已解决
根据下面 cmets 中与 @RobW 和 @MonkeyZeus 的讨论,我了解到虽然有几种方法可以得到我需要的东西,但最直接的答案是使用 keypress 而不是 keyup。如果您出于某种原因必须使用 keyup,那么在下面的其他答案中,有一些很好的解决方案可以检测 shift 键。
谢谢, 大卫
【问题讨论】:
-
2和@的keycode相同,需要检查shift键。
-
正如@crnlx 指出的,您可以检查shiftKey。您可以使用
keydown事件并调用String.fromCharCode来获取keyCode 的值,也可以评估keyup 事件发生时的值。 -
当然,如果有人使用英国键盘,这一切都会失败!
-
@RobW 我希望我从未删除我的评论,你是对的。我认为要获得最佳的跨国和跨键盘功能,您需要检查
<input>字段中的实际字符来决定采取什么行动,而不是用键码等跳过箍 -
@MonkeyZeus 好吧,如果我真的想通过键盘检测“@”或“#”(不是复制粘贴),我不会使用这些方法中的任何一种,但
keypress事件(不是keydown或keyup)。