文本框前台JS校验(数字、小数点后位数、长度限制)

先来说下用法:

 onkeyup="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;
}

 

你可能感兴趣的:(文本框前台JS校验(数字、小数点后位数、长度限制))