JS+JQuery常见验证方法

仅供参考

1. 验证邮箱   传入id值 页面另外有id+msg的无内容空id,用于显示错误信息

function checkEmail(id){
    var temp = $("#"+id)
    var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
    if(!myreg.test(temp.val()))
    {
    	$("#"+id+"msg").html("电子邮箱格式错误");
        $("#"+id).addClass("inputBorder");
        return false;
    }else {
        $("#"+id+"msg").html("");
        $("#"+id).removeClass("inputBorder");
        return true;
    }  
}

2. 验证身份证号码  传入输入控件id值

 //TODO 身份证号码校验 START
function IDCard_validate(id){
	var inputStr = trim($("input[name='" + id + "']").val());
	var inputPro = "身份证号";
	if (inputStr == null)
	inputStr = "";
	var format = inputStr.length;

	if (!this.is0AndPosInteger(inputStr)) {
		$('input[name="'+ id +'"]').addClass('errorItem');
		$.messager.alert('提示', inputPro + "输入不合法!");
		return false;
	}

	if (inputStr == "")
		return true;
	if ((format == 18) && (!this.checkCheckStr(inputStr))) {
		$('input[name="'+ id +'"]').addClass('errorItem');
		return false;
	}
	if (format == 15 || format == 18) {
		if (!this.checkID(inputStr, inputPro, format)) {
			$('input[name="'+ id +'"]').addClass('errorItem');
			return false;
		}
	} else {
		$('input[name="'+ id +'"]').addClass('errorItem');
		$.messager.alert('提示', "身份证号码的位数输入不正确!");
		return false;
	}
	$('input[name="'+ id +'"]').removeClass('errorItem');
	return true;
}
 
 /**
  * (二代身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
  * 为确保身份证为18位,Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。
  * 身份证第18位(校验码)的计算方法:
  * 1、将前面的身份证号码17位数分别乘以不同的系数。
  *    从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 
  * 2、将这17位数字和系数相乘的结果相加。 
  * 3、用加出来和除以11,看余数是多少? 
  * 4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身
  *    份证的号码为1-0-X-9-8-7-6-5-4-3-2 。 
  * 5、通过上面得知如果余数是2,身份证的最后一位号码就是罗马数字X。如果余数是10,就会在身份证的第18位数字上出现的是2。 
  * 例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。 
  * 首先我们得出前17位的乘积和是189,然后用189除以11得出的结果是17+2/11,也就是说其余数是2。
  * 最后通过对应规则就可以知道余数2对应的是罗马数字X。所以,可以判定这是一个合格的身份证号码。
  **/
function checkCheckStr(inputstr){
    var i = (inputstr.substr(0, 1) * 7 + inputstr.substr(1, 1) * 9
    + inputstr.substr(2, 1) * 10 + inputstr.substr(3, 1) * 5
    + inputstr.substr(4, 1) * 8 + inputstr.substr(5, 1) * 4
    + inputstr.substr(6, 1) * 2 + inputstr.substr(7, 1) * 1
    + inputstr.substr(8, 1) * 6 + inputstr.substr(9, 1) * 3
    + inputstr.substr(10, 1) * 7 + inputstr.substr(11, 1) * 9
    + inputstr.substr(12, 1) * 10 + inputstr.substr(13, 1) * 5
    + inputstr.substr(14, 1) * 8 + inputstr.substr(15, 1) * 4 
    + inputstr.substr(16, 1)* 2) % 11;
    var last = 0;
    if (i == 10) 
    	last = 2;
    if (i > 2 && i < 10) 
		last = 12 - i;
	
	if (i == 2)
		last = "X";
	if (i < 2)
		last = 1 - i;
	if (inputstr.substr(17, 1) == last) {
		return true;
	} else {
		// 身份证号码输入不合法!校验位错误!
		$.messager.alert('提示', "身份证号码输入不合法!");
		return false;
	}
}
 
function is0AndPosInteger(inputVal) {
	var format = inputVal.length;
	if (format == 18) {
		var lastChar = inputVal.charAt(inputVal.length - 1)
		if (lastChar == "X")
		inputVal = inputVal.substring(0, inputVal.length - 1);
	}
	for (var i = 0; i < inputVal.length; i++) {
		var oneChar = inputVal.charAt(i)
		if (oneChar < "0" || oneChar > "9") {
			return false;
		}
  	}
	return true;
}

//校验18位身份证的7-14位或者15位身份证的7-12位的年月日是否正确
function checkID(inputStr,objName,format){
	if (this.isValidUserID(inputStr)) {
		var temp;
		var year, month, day;
   		if (inputStr.length != format) {
    		$.messager.alert('提示', objName + "格式不对,应为“" + format + "”位。");
    		return false;
   		} else {

			if (format == 18) {
		
				temp = inputStr.substring(6, 10);
				year = parseInt(temp, 10);
				if (year < 1900 || year > 2200) {
					$.messager.alert('提示', objName + "年份应介于1900与2200之间,请重新输入!");
					return false;
				}

			} else if (format == 15) {
     			temp = inputStr.substring(6, 8);
     			year = parseInt(temp, 10);
     			if (year < 00 || year > 99) {
     				$.messager.alert('提示', objName + "年份应介于00与99之间,请重新输入!");
					return false;
     			}
    		}

    		if (format == 18)
    			temp = inputStr.substring(10, 12);
    		else if (format == 15)
     			temp = inputStr.substring(8, 10);

    		month = parseInt(temp, 10);
		    if (month < 1 || month > 12) {
				$.messager.alert('提示', objName + "月份必须介于1与12之间!");
				return false;
		    }

			if (format == 18)
				temp = inputStr.substring(12, 14);
			else if (format == 15)
				temp = inputStr.substring(10, 12);

			day = parseInt(temp, 10);
			if ((day == 0) || (day > 31)) {
				$.messager.alert('提示', objName + "日必须介于0与31之间!");
				return false;
			} else if (day > 28 && day < 31) {
				if (month == 2) {
					if (day != 29) {
						$.messager.alert('提示', objName + year + "年" + month + "月无" + day + "日。");
						return false;
					} else {
						if ((year % 4) != 0) {
							$.messager.alert('提示', objName + year + "年" + month + "月无" + day + "日。");
							return false;
						} else {
							if ((year % 100 == 0) && (year % 400 != 0)) {
								$.messager.alert('提示', objName + year + "年" + month + "月无" + day + "日。");
								return false;
							}
						}
					}
				}
 			} else if (day == 31) {
				if ((month == 2) || (month == 4) || (month == 6) || (month == 9) || (month == 11)) {
					$.messager.alert('提示', objName + month + "月无" + day + "日");
					return false;
				}
			}
		}
		return true;
	} else {
		$.messager.alert('提示', "身份证应为数字和字母的组合");
		return false;
	}
}

 //判断是否身份ID,过滤特殊符号
function isValidUserID(checkStr) {
	var checkOK = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var allValid = true;
	for (i = 0; i < checkStr.length; i++) {
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
			if (j == checkOK.length) {
    		allValid = false;
    		break;
		}
	}
	return allValid;
}
//TODO 公民身份证号校验 END

3. 验证是否汉字  name表示控件名称,可以为中文,英文等等 ,id 表示控件id 

function checkHanzi(name, id) {
	var str = document.getElementById(id).value.replace(/(^\s*)|(\s*$)/g, "");
	if (str.match(/[^\u4E00-\u9FA5]/g)) {
		$.messager.alert('提示',name + "的值应该是汉字!");
		document.getElementById(id).style.backgroundColor = color;
		document.getElementById(id).focus();
	    return false;
	} else {
		document.getElementById(id).style.backgroundColor = '';
	}
	return true; 
}













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值