僅供參考
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;
}