文本框前台JS校验(数字、小数点后位数、长度限制)
先来说下用法:
οnkeyup="infoValidate(type,length,lengthAfterPoint,this);"
type: 对应java里的数据类型分别有 Short、Integer、Long、BigDecimal 、String, Short、Integer、Long会自动校验java对应的大小
length:长度限制,英文数字占一个字符,汉字占两个,没有长度限制给null
lengthAfterPoint:小数点后位数(包含在总长度之内)没有小数点给null
下面给方法的详细:
function infoValidate(type, len, digit, obj) {
var value = obj.value;
if (type == "BigDecimal") {
if (value.indexOf(",") == 0) {
obj.value = "";
return;
} else {
value = obj.value.replace(",", "");
}
}
var flag = true;
// 整型校验
if (type == "Integer" || type == "Short" || type == "Long") {
for (i = 0; i < value.length; i = i + 1) {
var c = value.charAt(i);
var checkNum = (type == "Integer" || type == "Short" || type == "Long")
&& (c >= '0' && c <= '9');
if (!checkNum) {
flag = false;
break;
}
}
if (!flag) {
// 有字符就清空
obj.value = "";
return;
}
}
// 短整形长度校验
if (type == "Short") {
if (parseInt(value) > 32767) {
obj.value = value.substr(0, 4);
}
}
// 整形长度校验
if (type == "Integer") {
if (parseInt(value) > 2147483647) {
obj.value = value.substr(0, 9);
}
}
if (type == "Long") {
if (parseInt(value) > 9223372036854775807) {
obj.value = value.substr(0, 9);
}
}
// 小数判断
if (type != "Integer" && type != "Short" && type != "Long"
&& digit != "null") {
if (value != "-" && isNaN(value)) {
obj.value = "";
return;
}
var pot = value.indexOf(".");
var intpartlen = len - digit;
if (pot == -1) {
if (value.length > intpartlen) {
obj.value = value.substr(0, intpartlen);
}
} else {
var vv = value.split(".");
if (vv.length == 2) {
var b = vv[0];
var a = vv[1];
if (b.length > intpartlen)
b = b.substr(0, intpartlen);
if (a.length > digit)
// a = a.substr(pot + 1, digit);
a = a.substr(0, digit);
obj.value = b + "." + a;
}
}
if (value.indexOf(".") > 0 && value.indexOf(".") < value.length - 1) {
len = len + 1;
}
}
// 长度校验,超长的截取
if (strlen(value) > len) {
if (type == "String") {
obj.value = value.substr(0, len / 2);
} else {
obj.value = value.substr(0, len);
}
}
}
function strlen(str) {
var len;
var i;
len = 0;
for (i = 0; i< str.length; i = i+1) {
if (str.charCodeAt(i) > 255) {
len += 2;
} else {
len = len + 1;
}
}
return len;
}