【问题标题】:jQuery/JS Keycodes: Several keycodes in one IF statementjQuery/JS 键码:一个 IF 语句中的多个键码
【发布时间】:2011-10-06 03:20:57
【问题描述】:

我正在尝试为我正在开发的应用程序设置一些键码,但这真的让我发疯。

我正在尝试设置键码,从 keyCode 65 到 91 、 44 、 47 和其他一些键码,执行功能。

所以我有这个:

var e = event || evt;
if ((e.keyCode > 65 || e.Keycode < 91)){
    // Do function
}

找到哪个有效。现在,如果我尝试添加另一个键码,它就不起作用了。 这是我尝试过的:

if ((e.keyCode > 65 || e.Keycode < 91) && (e.keyCode == 44) && (e.keyCode == 47)){

有人帮我在一个 If 语句中添加不同的键码吗?

非常感谢

【问题讨论】:

  • 你确定这不是语法相关的吗?你似乎在使用e.Keycode &lt; 91e.keyCode &gt; 65
  • 大声朗读这个表达式,看看它是否有意义。 “如果代码在 65 和 91 之间,并且等于 44,并且等于 47,则执行以下操作:...”基本上,您应该将那些 &amp;&amp; 运算符替换为 ||
  • (e.keyCode > 65 || e.Keycode
  • @Pointy 我把它读作:如果代码在 65 和 91 之间,代码是 44,代码是 47 有什么作用?
  • 我认为这是 SO 上极为罕见的情况之一,在问题中包含代码会使每个人都感到困惑

标签: javascript jquery keycode


【解决方案1】:

试试这个

if (
  // get all the keys between 65-90
  (e.keyCode >= 65 && e.keyCode <= 90) 
  // or  44 or 47
  || e.keyCode == 44 || e.keyCode == 47)
{
   // do stuff
}

如果条件逻辑让你感到困惑,我认为最好考虑一下你想要包含(不排除)的数字。将它们分成范围并将每个范围放在自己的行上。从伪代码开始:

if 
  // keys between 31-47
  // or keys between 58-90
then
  // do stuff
end

然后填写条件:

if (
  // keys between 31-47
  (e.keyCode >= 31 && e.keyCode <= 47) 

  // or keys between 58-90
  || (e.keyCode >= 58 && e.keyCode <= 90) 
)
{
  // do stuff
}

【讨论】:

  • 而不是问一个新问题。你能快速输入我的方法吗?我试过这个: if ( (e.keyCode >= 31 || e.Keycode = 48 || e.Keycode
  • @jQuerybeast 我添加了一些可能对你有用的信息
【解决方案2】:

如果你想要从 31 到 90 的所有东西,除了从 48 到 57 的东西:

if (e.keyCode >= 31 && e.keyCode <= 90 && !(e.keyCode >= 48 && e.keyCode <= 57)) {
  // whatever 
}

现在可以等效地写成:

if (e.keyCode >= 31 && e.keyCode <= 47 || e.keyCode >= 58 && e.keyCode <= 90) {
  // whatever
}

【讨论】:

  • 你试过了吗?因为它似乎不起作用。非常感谢先生
  • 我很确定它应该可以工作,但我不知道你的其余代码在做什么。您应该知道键码字符码不同。如果您期望“keydown”和“keyup”事件为您提供 ASCII/UTF 字符代码,那么它们不会。
  • 好吧,我只是在提醒键码,但它不起作用。出于某种原因,只有这样才有效:if ((e.keyCode >= 58) || (e.keyCode
【解决方案3】:
if ((e.keyCode > 65 && e.Keycode < 91) || e.keyCode == 44 || e.keyCode == 47){
   //do stuff
}

【讨论】:

  • 不完全是@Andri - 正如所写的那样,这永远不会是真的,因为 44 和 47 都不在 65 和 91 之间。
  • 哎哟!我以为@jQuerybeast 累了。我现在看到我必须立即停止今天的编码,否则明天可能会后悔。顺便说一句。
猜你喜欢
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
相关资源
最近更新 更多