2012-06-28 32 views
0

我使用下面的脚本进行十进制validate.I只需要输入数字和点符号像123.00 only.The下面的函数不支持字母,罚款。但它不允许输入点(。 )符号也?如何使用此功能输入点符号?JavaScript中的小数验证

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

这将是有益结账.. http://stackoverflow.com/questions/10023845/regex-in-javascript-for -validating十进制数 – 2013-04-08 13:51:27

回答

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

这是做工精细。但其允许123.23.45 .....多个dot.How限制,只允许一个点 – User

+0

给ID输入框,而验证,得到了文本框和分裂与价值“”,如果阵列更大比2,然后返回 –

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

它提供了以下错误的Microsoft JScript运行时错误:对象不支持 – User

+0

是否包含jQuery库此属性或方法? match()是一个jQuery方法。 –

+0

jQuery代。 = _ = – Leonid

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

接受十进制数,为IE和Firefox – lgutierrez

0

试试这个:

//验证数字字段

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

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

0

检查thorugh isNaN()方法

VAR一个= 3.00003

isNaN的(a)将返回false

变种B = '3.0.0' isNaN(B)将返回true

我觉得这个方法解决你的问题。

0
 

     function checkDecimal(num){ 

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

     } 

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

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