【问题标题】:Restrict keydown event to characters only将 keydown 事件限制为仅字符
【发布时间】:2013-11-14 09:54:45
【问题描述】:

如何限制 keydown 事件仅在按下字符时生效?当键盘上按下非字符时,我想跳过代码,例如主页按钮,结束按钮。

我知道我可以使用e.which == someNumber 来定位这些按钮,但有更好的方法吗?为每个非字符按钮编写条件似乎不是一个好主意。

谢谢!

【问题讨论】:

  • 仅限英文字符还是任何字符? Unicode 支持?请详细说明。
  • @VisioN 任何类型的字符,只要它显示在文本框或其他东西上。
  • 我会将所有“授权”键码放在一个 javascript 数组中,然后在键上测试 e.which 是否在该数组中。要查看数组,您可以参考this post
  • 这里有长度说明:unixpapa.com/js/key.html
  • 这可能对你有帮助stackoverflow.com/questions/5534346/…

标签: javascript keypress


【解决方案1】:

试试这个

$(function () {
$(document).on('keydown', function (event) {
    if (event.keyCode == yourkeycode) {
        //stuff
    }
});
});

【讨论】:

  • 如果他仍然需要检查单个键码,这如何解决他的问题? jquery中的keydown不会触发非ascii字符吗?
【解决方案2】:

您必须实施某种形式的范围检查。选择需要最少编码量的范围。作为一个角色,你会描述什么?会是 32 到 125 之间的所有内容吗?在ascii table 上查看您感兴趣的范围。

【讨论】:

  • 我猜?所以我可以只写 e.which > 31 && e.which
  • 那个范围只是一个例子。您在哪里看到 37 到 40 是箭头键?
  • 我刚刚做了一个console.log(e.which),按下箭头时会出现37到40
  • 你是对的。 AsciiTable 不用于 Keydown 事件。我似乎找不到它的文档,但试试这个网站cambiaresearch.com/articles/15/javascript-char-codes-key-codes。我们的想法是根据图表限制您的代码。
猜你喜欢
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 2016-05-25
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
相关资源
最近更新 更多