您的位置:首页 > Web前端 > JavaScript

html中常用JavaScript验证表单文本域方法,如日期、字符串、数字等

2010-06-01 14:56 801 查看
//===========验证函数 start
var isIE = false;
var isFF = false;
var isSa = false;
if ((navigator.userAgent.indexOf("MSIE") > 0) && (parseInt(navigator.appVersion) >= 4)) {
	isIE = true;
}
if (navigator.userAgent.indexOf("Firefox") > 0) {
	isFF = true;
}
if (navigator.userAgent.indexOf("Safari") > 0) {
	isSa = true;
}

//作用:控制职能输入数字
function onlyNumber(e) {
	var key;
	iKeyCode = window.event ? e.keyCode : e.which;
	if (!(((iKeyCode >= 48) && (iKeyCode <= 57)) || (iKeyCode == 13) || (iKeyCode == 46) || (iKeyCode == 45) || (iKeyCode == 37) || (iKeyCode == 39) || (iKeyCode == 8))) {
		if (isIE) {
			e.returnValue = false;
		} else {
			e.preventDefault();
		}
	}
}

// 文本框: <input type="text" maxlength="8" Class="input" name="txtName" onkeypress="return onlyNumber(event)" style="ime-mode:Disabled"  size="25"/>
/*
禁止提交非小数或非整数,需要三个步骤:
1.文本框事件 onkeypress="return onlyNumber(event)"
2.文本框样式 style="ime-mode:Disabled"
3.在提交函数save()里,添加
  if (validateNumber('txtName')){
       document.form1.submit();
    }
 */
 //如果包含非数字,则返回false。允许输入小数点
function validateNumber() {
	var len = arguments.length;
	var flag = true;
	for (var i = 0; i < arguments.length; i++) {
		flag = numericCheck(arguments[i]);
	}
	return flag;
}

//作用:只允许输入数字,并提示发现若干个个不可接受的字符
function numericCheck(parameter) {
	var el = document.getElementById(parameter);
	nr1 = document.getElementById(parameter).value;
	flg = 0;
	str = "";
	spc = "";
	arw = "";
	for (var i = 0; i < nr1.length; i++) {
		cmp = ".0123456789";
		tst = nr1.substring(i, i + 1);
		if (cmp.indexOf(tst) < 0) {
			flg++;
			str += " " + tst;
			spc += tst;
			arw += "^";
		} else {
			arw += "_";
		}
	}
	if (flg != 0) {
		if (spc.indexOf(" ") > -1) {
			str += "和空格";
		}
		var prevNode = el.parentNode.previousSibling.innerText;
		alert(prevNode+"只允许输入数字,发现" +flg+"个不可接受的字符/n");
		el.select();
		el.focus();
		return false;
	} else {
		return true;
	}
}

//作用:判断日期是否合法,能够有效的验证闰年,支持的日期格式有:2009-01-01、2009/01/01两种格式
//参数:dateValue
function IsDate(dateValue) {
	var regex = new RegExp("^(?:(?:([0-9]{4}(-|/)(?:(?:0?[1,3-9]|1[0-2])(-|/)(?:29|30)|((?:0?[13578]|1[02])(-|/)31)))|([0-9]{4}(-|/)(?:0?[1-9]|1[0-2])(-|/)(?:0?[1-9]|1//d|2[0-8]))|(((?:(//d//d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))(-|/)0?2(-|/)29))))$");
	if (!regex.test(dateValue)) {
		return false;
	} else {
		return true;
	}
}

//作用:比较日期,目前只支持“年-月-日”格式,如果sEndDate晚于sBeginDate,返回true,
//参数:sBeginDate
//     sEndDate
function compareDate(sBeginDate, sEndDate) {
	var strdt1 = sBeginDate.replace("-", "/");
	var strdt2 = sEndDate.replace("-", "/");
	var dt1 = new Date(Date.parse(strdt1));
	var dt2 = new Date(Date.parse(strdt2));
	if (dt1 <= dt2) {
		return true;
	} else {
		return false;
	}
}

//===========验证函数 end

//字符串操作函数
String.prototype.trim = function () {
	return this.replace(/(^/s*)|(/s*$)/g, "");
};
String.prototype.ltrim = function () {
	return this.replace(/(^/s*)/g, "");
};
String.prototype.rtrim = function () {
	return this.replace(/(/s*$)/g, "");
};

//作用:删除左右两端的空格
//参数:str,待处理的字符串
function trim(str) {
	return str.replace(/(^/s*)|(/s*$)/g, "");
}

//作用:删除左边的空格
//参数:str,待处理的字符串
function ltrim(str) {
	return str.replace(/(^/s*)/g, "");
}

//作用:删除右边的空格
//参数:str,待处理的字符串
function rtrim(str) {
	return str.replace(/(/s*$)/g, "");
}

//作用:去除左右空格,判断得出值的长度是否为0,是则true,大于0则false
//参数:value
function ifValueLengthIsZero(value) {
	var v = trim(value);
	if (v.length < 1) {
		return true;
	}
	return false;
}

//作用:字符串操作函数,数字校检
//使用范例:<input type="text" name="Code" size="10" maxlength="6" OnKeyPress="Javascript:NumInputOnly();"
function NumInputOnly() {
	if (event.keyCode > 57 || event.keyCode < 48) {
		event.keyCode = 0;
	}
}

//作用:判断是否为输入整数
//参数:s,传入字符串
function isInt(s) {
	if (s.value == "") {
		return true;
	}
	var chk = parseInt(s.value, 10);
	if (chk != s.value || chk < 0) {
		alert("该字段应是正整数!");
		s.focus();
		s.select();
		return false;
	}
	return true;
}

//作用:浮点数输入判断
//参数:obj传入参数
function isFloat(obj) {
	if (obj.value == "") {
		return true;
	}
	var chk = parseFloat(obj.value);
	if (chk != obj.value) {
		alert("该字段应是整数或小数!");
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}

//作用:获得字符串串长度
//参数:value,传入字符串
function strLen(value) {
	var str, Num = 0;
	for (var i = 0; i < value.length; i++) {
		str = value.substring(i, i + 1);
		if (str <= "~") {
			Num += 1;
		} else {
			Num += 2;
		}
	}
	return Num;
}

//作用:最小长度  (不能为空)
//参数:value,传入字符串
function vMinlength(obj, minlength) {
	if (trim(obj.value).length < minlength) {
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}

//作用:最大长度  (不能为空)
//参数:value,传入字符串
function vMaxlength(obj, maxlength) {
	if (trim(obj.value).length > maxlength) {
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}

//作用:判断输入时是否超过了数据库设定的字符长度
//参数:Str,页面上的字段
//     ValidStrLength,数据库设置的长度
//     StrName,表示是什么字段名称
//调用指南:
/*  if (!TrueLength(vcjlzdbdh.value,50,"证书编号")){
        vcjlzdbdh.focus();
        return(false);
    }
    若超过长度,则会弹出“您输入的 证书编号 长度超过最大允许值。”的提示
*/
function TrueLength(Str, ValidStrLength, StrName) {
	var r;
	var i;
	var count = 0;
	var ret;
	for (i = 0; i < Str.length; i++) {
		r = Str.charCodeAt(i, 1);
		if (r > 255) {
			count = count + 2;
		} else {
			count = count + 1;
		}
	}
	if (count > ValidStrLength) {
		alert("您输入的 "+StrName+" 长度超过最大允许值。");
		ret = false;
	} else {
		ret = true;
	}
	return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: