【问题标题】:Check if a textbox contains numbers only检查文本框是否仅包含数字
【发布时间】:2015-07-31 03:53:39
【问题描述】:

如何检查文本框是否只包含数字?

在谷歌搜索时,我遇到了这个。但我想知道 isNumeric 是否可以用于此目的,或者是否有更简单的方法来检查文本框是否具有数值。

var query = $('#myText').val();
if (parseFloat(query) == NaN) {
    alert("query is a string");
} else {
    alert("query is numeric");
}

【问题讨论】:

标签: javascript jquery regex


【解决方案1】:

使用纯JS正则表达式

 var query = document.getElementById('myText').value;
 var isNumeric=query.match(/^\d+$/);
  if(isNumeric){/*...*/}else{/*...*/}

或者使用html5控件

 <input type="number" name="quantity" min="1" max="5">

【讨论】:

    【解决方案2】:

    您可以在输入和正则表达式中使用change 事件检查用户是否只输入了数字。

    $(document).ready(function() {
        $('#myText').on('change', function() {
            if (/^\d+$/.test($(this).val())) {
                // Contain numbers only
            } else {
                // Contain other characters also
            }
        })
    });
    

    正则表达式:

    1. /: 正则表达式的分隔符
    2. ^:开头是
    3. \d: 任意数字
    4. +: 一个或多个前面的字符
    5. $:结束

    正则表达式可视化:

    Demo


    如果你只想允许数字,你可以使用input-numberpattern

    <input type="number" pattern="\d+" />
    

    【讨论】:

    • 使用input type="number" pattern="\d+",我怎么能只允许小数点后两位数字,即10.99而不是10.9999
    • @Slimshadddyyy \d+(\.\d{1,2})
    • 我仍然可以使用上面的正则表达式在小数点后添加两位以上的数字
    • 工作就像一个魅力。+1
    【解决方案3】:

    方法很多,你可以用isNaN

     isNaN(VALUE);
    

    您还可以使用正则表达式来验证数值。

    console.log(/^\d+$/.test(VALUE));
    

    【讨论】:

      【解决方案4】:

      您可以将文本框的值与数字回归进行匹配,以检查它是否仅包含数字,如下面的代码...

      if($('#myText').val().match(/^\d+$/)){
      // Your code here
      }
      

      【讨论】:

        【解决方案5】:

        Jquery 提供了通用的 util 方法来处理这个问题。 处理数字/浮点数/十六进制

        $.isNumeric( value )
        

        试试:fiddle

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-04
          • 2013-03-02
          • 1970-01-01
          • 1970-01-01
          • 2013-10-04
          • 1970-01-01
          • 2010-12-19
          相关资源
          最近更新 更多