js验证整数加保留小数点
1 function validateNum(obj) { 2 //正整数(此处用了缓存) 3 var number = obj.data('validate').number; 4 //小数点(此处用了缓存) 5 var decimal = obj.data('validate').decimal; 6 //动态基本验证正则 7 eval("var reg = /^[0-9]{0," + number + "}([.]?[0-9]{0," + decimal + "})$" + "/g;"); 8 var value = obj.val(); 9 var maxnumlen = number + decimal + 1; //最大长度 + 1(小数点) 10 if (!reg.test(obj.val())) return false; 11 //最大长度等于当前值的长度并且值没有"." 12 if (maxnumlen == value.length && value.indexOf('.') <= 0) { 13 return false; 14 } 15 //尝试得到"."的索引 16 var valueindexof = value.indexOf('.'); 17 if (valueindexof > 0) { 18 //如果"."索引后一位是空那么肯定是返回false 19 if (value.charAt(valueindexof + 1) == "") { 20 return false; 21 } 22 } 23 //分割值就很容易判断出前后内容 24 var valuesplit = value.split('.'); 25 //如果值的长度大于定义的正整数长度 26 if (value.length > number) { 27 if (valuesplit.length == 1) { 28 return false; 29 } 30 //最大长度-所定义长度 大于 最大长度 即超长 ,false. 31 if (maxnumlen - number >= maxnumlen) { 32 return false; 33 } 34 } 35 return true; 36 }
给元素缓存一个validate对象后,调用即可。
定义:
$("#example").data("validate", { number: 2, decimal: 2 });
调用:
validateNum($("#example"));