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; 
}













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章