JavaScript 中的十进制验证

Decimal validation in JavaScript

本文关键字:验证 十进制 JavaScript      更新时间:2023-09-26

我使用以下脚本进行十进制验证。我只需要输入数字和点符号,例如 123.00。以下函数不支持那么好的字母,但它也不允许输入点(.)符号?如何使用此功能输入点符号?

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

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

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;
      }
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;
    }

试试这个:

验证数值字段

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

你也可以检查parseFloat方法,它返回NaN。

check thorugh isNaN() 方法

变量 a =3.00003

isNaN(a) 将返回假

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

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

     函数检查十进制(num){          var chkDecimal=/^''d+''.''d{0,2}$/;        返回 chkDecimal.test(num);      }      警报(检查十进制(0.2))      警报(检查十进制(1)) 

问题的完整解决方案是

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;
    }
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;
}