繁体   English   中英

仅在jQuery中输入数字

[英]Input numbers only in jquery

我有一个问题。 我仅在输入中输入的字符为NUMBERS时才尝试执行我的任务。

这是目前的代码。

  $(".jq-sales, .jq-variablecosts, .jq-fixedcosts, .jq-additional-sales, .jq-sales-units, .jq-variablecosts-units, .jq-totalsold-units").keypress(function(event) {
      if (event.keyCode >= 48 && event.keyCode <= 57 && event.keyCode >= 96 && event.keyCode <= 105) {
        event.preventDefault();
      } 
      else {
        // DO my stuff
      }       
    });

我的代码有什么问题?

我希望能够检测到何时从数字键盘和键盘顶部的数字按下它们。

你的情况是不可能的

  if (event.keyCode >= 48 && event.keyCode <= 57 && event.keyCode >= 96 && event.keyCode <= 105) {

数字不能介于48和57之间,也不能介于96和105之间

  if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {

使用或(||事物)

另外,如果要在满足上述条件时执行“自己的工作”,则应在条件为真时执行操作,而不是在条件不成立时执行操作。

  if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {
      // do stuff here
  } else {
      // do nothing
      event.preventDefault();
  }

您的条件逻辑将永远不会过去。 例如,您要求keyCode为<= 57 AND> = 96。

此外,解决该问题后,您将防止数字键击并在非数字上执行代码。

因此,您需要编写以下内容:

    $(".jq-sales, .jq-variablecosts, .jq-fixedcosts, .jq-additional-sales, .jq-sales-units, .jq-variablecosts-units, .jq-totalsold-units").keypress(function(event) {
                if (
                        ( event.keyCode >= 48 && event.keyCode <= 57 ) ||
                        ( event.keyCode >= 96 && event.keyCode <= 105 )
                    )
                {
                    // DO my stuff
                } 
                else {
                    // Ignore non-numeric input
                    event.preventDefault();
                }       
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM