如何使用JQuery正确检查值是否为数字?

时间:2015-12-17 11:04:51

标签: javascript jquery html html5 jquery-plugins

进入JQuery脚本我做这样的事情来检查插入到 id =“variazioneAnticipo 的输入字段中的值是否为数字:

var variazioneAnticipo = $("#variazioneAnticipo").val();

if($.isNumeric(variazioneAnticipo)) {
    alert("NUMBER");
}
else {
     alert("NOT A NUMBER");
}

这很好但唯一的问题是 isNumeric() JQuery函数还考虑了数字指数表示法以及其他我不想考虑的符号号。

如何在此处看到:https://api.jquery.com/jQuery.isNumeric/这些符号被视为数字:

$.isNumeric( 0xFF );      // true
$.isNumeric( "0xFF" );    // true
$.isNumeric( "8e5" );     // true (exponential notation string)

如何防止这些符号被视为数字?我能否以某种方式指定对我来说什么是数字以及什么不使用 isNumeric()函数?

或者如果值是一个数字而不考虑以前的情况,我该怎么说呢?

2 个答案:

答案 0 :(得分:3)

  1. pattern
  2. 上使用input属性
  3. 在输入上绑定键盘事件
  4. 输入值时,检查该值是否满足float regex
  5. $('#num').on('keyup', function() {
      var value = $(this).val();
    
      if (/^[0-9]+(\.[0-9]+)?$/.test(value)) {
        $('#message').text('Valid');
      } else {
        $('#message').text('Invalid');
      }
    });
    #num:invalid {
      color: red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <input type="text" pattern="[0-9]+(\.[0-9]+)?" id="num" />
    <div id="message"></div>

    Regex Explanation:

    /^[0-9]+(\.[0-9]+)?$/
    
    1. ^:行首
    2. [0-9]+:匹配一个或多个0到9的数字出现
    3. (\.[0-9]+)?:匹配一个或多个数字后跟小数点。整个组可以出现零次或一次。
    4. $:行尾
    5. 与HTML和CSS相同的代码

      #valid,
      #invalid {
        display: none;
      }
      #num:invalid,
      #invalid {
        color: red;
      }
      #num:valid,
      #valid {
        color: green;
      }
      #num:invalid ~ #invalid {
        display: block;
      }
      #num:valid + #valid {
        display: block;
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
      <input type="text" pattern="[0-9]+(\.[0-9]+)?" id="num" />
      <div id="valid">Valid</div>
      <div id="invalid">Invalid</div>

答案 1 :(得分:2)

扩展Tushar's comment,用一个小提琴来回答:

$(function () {
  $("#out").click(function () {
    alert(/^[0-9]+(?:\.[0-9]+)?$/.test($("#in").val()) ? "Yes" : "No");
  });
});
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<input type="text" id="in" />
<input type="submit" value="Check" id="out" />

完美适用于数字,浮点值,而不是十六进制或指数。