【问题标题】:Determine if a Letter or a number was pressed - Javascript [duplicate]确定是否按下了字母或数字 - Javascript [重复]
【发布时间】:2016-04-13 18:37:52
【问题描述】:

所以我知道我们可以找到一个键是否被按下,并且我们可以通过使用javascript知道哪个键被按下。

要确定一个键是按下还是按下,我们可以使用 jQuery

$( "#some id" ).keydown(function() 

$( "#m" ).keypress(function() 

但这对我来说不是很好。 我正在尝试确定是否按下了字母或数字。

但是,为了提高效率,我不想用大的 if(或者更糟糕的 for 循环)检查按下的键是字母还是字符(通过比较和检查字符代码)

是否有一个内置的 javascript 函数来确定是按下数字还是按下字母?有没有一种有效的方法来做到这一点?还是我只是把事情复杂化了?

【问题讨论】:

  • 是的,很确定人们以前也这样做过。
  • 按范围检查...字母都彼此相邻。数字也是如此。你只需要几个 if 子句
  • 您可以只检查哪些代码范围是数字,哪些是字母。我认为数字范围为 48-57,字母范围为 65-90,数字键盘键范围为 96-105
  • 根据这些答案,您必须映射键盘:stackoverflow.com/a/302161/3531064stackoverflow.com/a/979686/3531064
  • 这取决于你的定义和你的目的——最终,你可能想看看角色的Unicode General Category 是什么。其他一切都只是做出诸如“您肯定不能在键盘上键入ä”之类的假设。

标签: javascript jquery html keypress keydown


【解决方案1】:

只需检查范围:

if (event.keyCode >= 48 && event.keyCode <= 57) {
    // Number
} else if (event.keyCode >= 65 && event.keyCode <= 90) {
    // Alphabet upper case
} else if (event.keyCode >= 97 && event.keyCode <= 122) {
    // Alphabet lower case
}

这是针对类似问题的详细answer。很好的参考。

数字键盘代码与键盘上方相同:参考来自Keyboard Keys and Key Code Values


更新:

使用.key

var x = event.key; // instead of event.keyCode

if (x >= 48 && x <= 57) {
    // Number
} else if (x >= 65 && x <= 90) {
    // Alphabet upper case
} else if (x >= 97 && x <= 122) {
    // Alphabet lower case
}

【讨论】:

  • NP,@miqdadamirali 比我早几秒钟到达那里。确保你赞同他的回答!
  • 嗯,大写字母呢?和数字键盘号码?
  • 我会更新代码
  • 你说得对@AdamBuchananSmith,虽然我自己实现了,但我只是需要一个想法,并记住数字和字母是组合在一起的
  • 您好,e.keyCode 现已弃用。
猜你喜欢
  • 2014-11-01
  • 2015-04-21
  • 2015-12-17
  • 2016-03-13
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
相关资源
最近更新 更多