?? validateutil.js
字號:
switch(idcard.length) {
case 15:
//大陸15位身份證號碼地區檢驗
if(area[parseInt(idcard.substr(0,2))]==null) {
alert("【"+message+"】的地址碼不是國家規定的,請您檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
//大陸15位身份證號碼上的年月日和出生日期檢測
var yearDate = objValue2.substr(2,2);
var monthDate = objValue2.substr(5,2);
var dayDate = objValue2.substr(8,2);
var yearID = idcard.substr(6,2);
var monthID = idcard.substr(8,2);
var dayID = idcard.substr(10,2);
if(yearDate!=yearID || monthDate!=monthID || dayDate!=dayID) {
alert("【"+message+"】和【出生日期】不匹配,請您檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
//大陸15位身份證號碼檢測
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
//大陸15位身份證號碼 閏年出生日期的合法性正則表達式
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;
} else {
//大陸15位身份證號碼 平年出生日期的合法性正則表達式
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;
}
//測試大陸15位身份證號碼出生日期的合法性
if(ereg.test(idcard)) {
return true;
}
else {
alert("【身份證號碼】中的出生日期超出范圍或者含有非法字符,請您檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
break;
case 18:
//大陸18位身份證號碼地區檢驗
if(area[parseInt(idcard.substr(0,2))]==null) {
alert("【"+message+"】的地址碼不是國家規定的,請您檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
//大陸18位身份證號碼上的年月日和出生日期檢測
var yearDate2 = objValue2.substr(0,4);
var monthDate2 = objValue2.substr(5,2);
var dayDate2 = objValue2.substr(8,2);
var yearID2 = idcard.substr(6,4);
var monthID2 = idcard.substr(10,2);
var dayID2 = idcard.substr(12,2);
if(yearDate2!=yearID2 || monthDate2!=monthID2 || dayDate2!=dayID2) {
alert("【"+message+"】和【出生日期】不匹配,請您檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
//大陸18位身份證號碼檢測
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
//大陸18位身份證號碼 閏年出生日期的合法性正則表達式
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;
} else {
//大陸18位身份證號碼 平年出生日期的合法性正則表達式
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;
}
//測試大陸18位身份證號碼出生日期的合法性
if(ereg.test(idcard)){
//計算校驗位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);//判斷18位身份證號碼的校驗位
if(M == idcard_array[17])
return true;
else {
alert("【身份證號碼】中的第18位校驗碼不正確,請您檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
}
else {
alert("【身份證號碼】中的出生日期超出范圍或者含有非法字符,請您檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
break;
case 10:
return true;
break;
default:
alert("【身份證號碼】的位數不正確,【大陸身份證】為15位或18位,【臺灣身份證】為10位,【香港身份證】包括兩個間括號也為10位,請您檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
break;
}
}
/*=============================【身份證號碼的驗證】結束==============================*/
/*=============================【整數數字的驗證】開始==============================*/
/**
* 功能:檢查數據入的全部是數字
* 使用:checkIsNumberNormal(objID,message,len)
* @param objID 對象的id
* @param len 對象的值最大長度
* @return 是數字ture ,不是數字false;
* @modify by @tombo
*/
//下面這個函數是驗證數字為正整數或者為零
function checkIsNumberNormal(objID,message,len){
var objValue = document.getElementById(objID).value;
if (checkIsNull(objID)){
alert("【"+message+"】的值為空,請您輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}else{
var pattern = "1234567890";
var i;
var c;
for(i=0; i<objValue.length; i++) {
c = objValue.charAt(i);
if (pattern.indexOf(c) == -1) {
alert("【"+message+"】的格式不正確,只能由【1234567890】這些數字組成!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
}
if(objValue.length > len) {
alert("您輸入的【"+message+"】過大,請檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
}
}
/*=============================【整數數字的驗證】結束==============================*/
/*=============================【電話號碼的驗證】開始==============================*/
/**
* 功能:判斷是否為電話號碼格式,由于大陸電話號碼、港澳臺和國際電話號碼格式不一樣,所以定義了一個通用的
* 這里只驗證不能包括的特殊字符,除了【0123456789-()+】這些字符
* 使用:checkPhoneNormal(objID,message,len)
* 返回:bool
* @param objID 對象的id
* @param message 對象的名稱
* @param len 對象允許輸入的最大長度
* @modify by @tombo
*/
//這是適合大陸電話號碼、港澳臺地區和國際電話號碼的通用函數
function checkPhoneNormal(objID,message,len) {
var objValue = document.getElementById(objID).value;
if (checkIsNull(objID)){
alert("【"+message+"】的值為空,請您輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}else{
var pattern = "0123456789()+-";
for (i=0; i< objValue.length; i++){
var CheckChar = objValue.charAt(i);
if (pattern.indexOf(CheckChar) == -1){
alert("【"+message+"】的格式不正確,只能由【0123456789-()+】這些字符組成!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
}
if(objValue.length > len) {
alert("您輸入的【"+message+"】過長,請檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
}
}
/**
* 功能:判斷是否為電話號碼格式
* 這里只驗證不能包括的特殊字符,除了【0123456789-()+】這些字符
* 因為大陸的電話號碼格式為區號為010,020到029,0300到0999,后面的號碼為7位或者8位數字
* 例如【010-88776655】、【0512-57882095】、【0724-8525712】
* 使用:checkPhoneGuoNei(objID,message,len)
* 返回:bool
* @param objID 對象的id
* @param message 對象的名稱
* @param len 對象允許輸入的最大長度
* @modify by @tombo
*/
//下面是適合專門針對國內的電話號碼
function checkPhoneGuoNei(objID,message,len) {
var objValue = document.getElementById(objID).value;
if (checkIsNull(objID)){
alert("【"+message+"】的值為空,請您輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}else{
var pattern = "0123456789()+-";
for (i=0; i< objValue.length; i++){
var CheckChar = objValue.charAt(i);
if (pattern.indexOf(CheckChar) == -1){
alert("【"+message+"】的格式不正確,只能由【0123456789-()+】這些字符組成!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
}
//表示區號由010、020到029、0300到0999中的任意組成,中間的橫線可有可無,后面是7位或8位數字組成
var pattern2 = /010|02[0-9]{1}|0[3-9]{1}[0-9]{2}[-]{0,1}[0-9]{7,8}/;
if (!pattern2.test( objValue )) {
alert("【"+message+"】的格式不正確,例如【010-87654567】、【0512-57882043】、\n【0724-8525712】,請檢查區號和號碼是否正確!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
if(objValue.length > len) {
alert("您輸入的【"+message+"】過長,請檢查后再輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
}
}
/*=============================【電話號碼的驗證】結束==============================*/
/*=============================【時間的驗證】開始==============================*/
/**
* 功能:檢查數據輸入的全部是時間 例如【13:05:12】,但不能為【13:60:00】
* 使用:checkTimeNormal(objID,message)
* @param objID 對象的id
* @param message 對象的名稱
* @return bool;
* @modify by @tombo
*/
function checkTimeNormal(objID,message) {
var objValue = document.getElementById(objID).value;
if (checkIsNull(objID)){
alert("【"+message+"】的值為空,請您輸入!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}else{
var pattern = new RegExp("^([0-1]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$");
if (!pattern.test( objValue )) {
alert("【"+message+"】的格式不正確,例如【13:05:20】,請檢查是否正確!");
document.getElementById(objID).focus();
document.getElementById(objID).select();
return false;
}
}
}
/*=============================【時間的驗證】結束==============================*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -