複製代碼 代碼如下:
function validateNum(obj) {
//正整數(此處用了緩衝)
var number = obj.data(validate).number;
//小數點(此處用了緩衝)
var decimal = obj.data(validate).decimal;
//動態基本驗證正則
eval("var reg = /^[0-9]{0," + number + "}([.]?[0-9]{0," + decimal + "})$" + "/g;");
var value = obj.val();
var maxnumlen = number + decimal + 1; //最大長度 + 1(小數點)
if (!reg.test(obj.val())) return false;
//最大長度等於當前值的長度並且值沒有"."
if (maxnumlen == value.length && value.indexOf('.') <= 0) {
return false;
}
//嘗試得到"."的索引
var valueindexof = value.indexOf('.');
if (valueindexof > 0) {
//如果"."索引後一位是空那麼肯定是返回false
if (value.charAt(valueindexof + 1) == "") {
return false;
}
}
//分割值就很容易判斷出前後內容
var valuesplit = value.split('.');
//如果值的長度大於定義的正整數長度
if (value.length > number) {
if (valuesplit.length == 1) {
return false;
}
//最大長度-所定義長度 大於 最大長度 即超長 ,false.
if (maxnumlen - number >= maxnumlen) {
return false;
}
}
return true;
}
給元素緩衝一個validate對象後,調用即可。
定義:
$("#example").data("validate", { number: 2, decimal: 2 });
調用:
validateNum($("#example));