允许/验证jquery中的整数,十进制,浮点值

时间:2013-12-02 08:07:32

标签: jquery validation floating-point integer decimal

我有一个像下面这样的html字段

<input type="text" name="price" class="validate_price" id="price"/>

因此该字段应仅接受来自输入的float,decimal,integer值。

jQuery代码

<script>
   function isFloat(value) 
             { 
                 return value!= "" && !isNaN(value) && Math.round(value) != value;
              }   
   $(document).ready(function(){
       $('.validate_price').focusout(function(){
             var value  = this.value;
             if (value)
                {
                   if (!isFloat(value) || !$.isNumeric(value))
                      alert('Value must be float or not');  
                }     

       });
   });
</script>

所以从上面的代码中,我的意图是,我应该允许用户输入整数值(1,2,2, etc.,),浮点值(1.0, 2.0, 3.0, 3.2, 3.5, etc.)和小数值(2.152, 4.56, 5.000, 6.3256, 2.00 etc.,)

如何检查/实施上述功能?

4 个答案:

答案 0 :(得分:8)

如果您从jQuery.isNumeric() manual手册中注意到它,它也会验证浮点数,因此不需要包含任何其他参数。要验证号码,您只需使用jQuery.isNumeric()

if (!$.isNumeric(value)) {
    alert('Value must be numeric');
}

我为你做了一个快速的jsFiddle:http://jsfiddle.net/guxz9/

答案 1 :(得分:1)

取自MDN documentation on parseFloat中的一段:

var filterFloat = function (value) {
    if(/^\-?([0-9]+(\.[0-9]+)?|Infinity)$/
      .test(value))
      return Number(value);
  return NaN;
}

答案 2 :(得分:1)

这将使您的所有浮点数有效。它也只会对单次负号(' - ')和点(。)符号有效。

function float_validation(event, value){
    if(event.which < 45 || event.which > 58 || event.which == 47 ) {
          return false;
            event.preventDefault();
        } // prevent if not number/dot

        if(event.which == 46 && value.indexOf('.') != -1) {
            return false;
            event.preventDefault();
        } // prevent if already dot

            if(event.which == 45 && value.indexOf('-') != -1) {
                return false;
            event.preventDefault();
        } // prevent if already dot

        if(event.which == 45 && value.length>0) {
            event.preventDefault();
        } // prevent if already -

    return true;

};


<input type="text" onkeypress="return float_validation(event, this.value)" class="form-control"/>

这将验证: -12.33 12.44 12

答案 3 :(得分:0)

 $("#Latitude, #Longitude, #Revenue").keydown(function(e) {
        debugger;
        var charCode = e.keyCode;
        if (charCode != 8) {
            alert($(this).val());
            if (!$.isNumeric($(this).val()+e.key)) {
                return false;
            }
        }

    return true;
    });