// js 身份证号码校验
function isCnNewID(cid){
var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子
var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码
if(/^\d{17}\d|x$/i.test(cid)){
var sum = 0, idx;
for(var i = 0; i < cid.length - 1; i++){
// 对前17位数字与权值乘积求和
sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];
}
// 计算模(固定算法)
idx = sum % 11;
// 检验第18为是否与校验码相等
return arrValid[idx] == cid.substr(17, 1).toUpperCase();
}else{
return false;
}
}
/**
* 获取当前添加身份证号的出生年月* @param idCard
* @return
*/
function getBirthdayFromIdCard (idCard) {
var birthday = "";
if(idCard.length == 15){
birthday = "19"+idCard.substr(6,6);
} else if(idCard.length == 18){
birthday = idCard.substr(6,8);
}
birthday = birthday.replace(/(.{4})(.{2})/,"$1-$2-");
return birthday;
}
/**
* 判断是否大于18岁
* @param date
* @return
*/
function checkAgeData(date){
var arrDate = date.split("-");
var jsNow= new Date();
var jsDate = new Date(arrDate[0],arrDate[1]-1,arrDate[2]);
nowYear= jsNow.getFullYear(); //获取完整的年份(4位,1970-????)
nowMonth=jsNow.getMonth()+1; //获取当前月份(0-11,0代表1月)
nowDate=jsNow.getDate(); //获取当前日(1-31)
jsYear=jsDate.getFullYear();
jsMonth=jsDate.getMonth()+1;
jsDate=jsDate.getDate();
if(nowYear-jsYear<18){ //如果年份小于18,直接返回false
return false;
}else if(nowYear-jsYear==18){ //如果年份差等于18,则比较月份
if(nowMonth>jsMonth){//年份等于18时,当前月份大于出生月份
return false;
}else if(nowMonth==jsMonth){//如果月份也相等,则比较日期
if(nowDate<jsDate){ //年份等于18,月份相等时,如果当前日期小于出生日期,
return false;
}
}
}
return true;
}