JavaScript中的十进制验证

时间:2012-06-28 10:27:43

标签: javascript javascript-events decimal validation

我使用以下脚本进行十进制验证。我只需输入数字和点符号,仅限123.00。以下函数不支持精细的字母。但它不允许输入点(。)< / strong>符号也是?如何使用此功能输入点符号?

function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
         else
         return true;
      }

8 个答案:

答案 0 :(得分:1)

function isNumberKey(evt)
       {
          var charCode = (evt.which) ? evt.which : event.keyCode
          if (charCode != 46 && charCode > 31 
            && (charCode < 48 || charCode > 57))
             return false;

          return true;
       }

答案 1 :(得分:0)

使用正则表达式,这是一种更优雅的方法。

function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode.match('/^[-+]?([0-9]*\.[0-9]+|[0-9]+)$/'))
            return false;
         else
         return true;
      }

答案 2 :(得分:0)

function validateFloatKeyPress2(valor, presicion, event) {
        var keyCode = (document.all) ? event.keyCode : event.which;
        if (keyCode == 8) {
            return true;
        }            
        if (keyCode == 46 && valor.value.indexOf(".") >= 0) {               
            return false;
        }
        //Enable Only float values
        if ((keyCode >= 48 && keyCode <= 57) || (keyCode == 46)) {

            if (reverse(valor.value).indexOf(".") > (presicion - 1)) {
                return false;
            }
            return true;
        }
        else {
            return false;
        }
    }

function reverse(s) {
        var o = '';
        for (var i = s.length - 1; i >= 0; i--)
            o += s[i];
        return o;
    }

答案 3 :(得分:0)

试试这个:

//验证数字字段

function validate(x) {
    var decimal = /^[1-9][\.\d]*(,\d+)?$/;
    if (x.match(decimal)) {
        return true;
    } else {
        return false;
    }
}

此外,您可以检查parseFloat方法并返回NaN。

答案 4 :(得分:0)

通过isNaN()方法检查 var a = 3.00003

isNaN(a)将返回false

var b ='3.0.0' isNaN(b)将返回true

我认为这种方法可以解决您的问题。

答案 5 :(得分:0)


      function checkDecimal(num){   

        var chkDecimal=  /^\d+\.\d{0,2}$/;
        return  chkDecimal.test(num);

      }

      alert(checkDecimal(0.2)) 
      alert(checkDecimal(1))  

答案 6 :(得分:0)

您的问题的完整解决方案是

function isNumberKey(e)
    {
        var code = (code ? code : e.which);           
        if (code != 46 && code > 31 && (code < 48 || code > 57))
            return false;
            //if it is (.)
        else if (code == 46) {
             var Value = this.value;
            //if value already contains (.) character
            if (Value.indexOf('.') != -1) {
                var splt = Value.split('.');
                //if there is already(.) char then return false
                if (splt.length >= 2)
                    return false;
            }
        }
        return true;
    }

答案 7 :(得分:0)

function IsNumeric(e) {
        var keyCode = e.which ? e.which : e.keyCode;
        var ret = ((keyCode == 46 || keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1);
        return ret;
}