📄 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 + -