0

我使用以下脚本进行十进制验证。我只需要输入像 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;
      }
4

8 回答 8

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;
       }
于 2012-06-28T10:29:55.857 回答
0

尝试这个:

//验证数字字段

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

您还可以检查 parseFloat 方法并返回 NaN。

于 2013-06-01T08:29:15.737 回答
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;
    }
于 2013-02-25T23:13:00.303 回答
0

通过 isNaN() 方法检查

变量 a =3.00003

isNaN(a) 将返回 false

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

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

于 2013-06-01T12:44:24.877 回答
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;
}
于 2014-09-22T08:03:07.947 回答
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;
      }
于 2012-06-28T10:31:07.147 回答
0
      函数 checkDecimal(num){   

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

      }

      警报(检查十进制(0.2))
      警报(检查十进制(1))  

于 2013-07-02T05:54:17.217 回答
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;
    }
于 2013-08-12T05:53:16.907 回答