以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 前端按钮点击后js判断身份证合法?点击没有效果? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=178994) |
||||
-- 作者:cnsjroom -- 发布时间:2022/8/2 14:00:00 -- 前端按钮点击后js判断身份证合法?点击没有效果? ({ button2: { text: \'{{text}}\', //系统自动匹配标题 visible: true, click: function() { //按钮单击事件 var vcity = { 11 : "北京", 12 : "天津", 13 : "河北", 14 : "山西", 15 : "内蒙古", 21 : "辽宁", 22 : "吉林", 23 : "黑龙江", 31 : "上海", 32 : "江苏", 33 : "浙江", 34 : "安徽", 35 : "福建", 36 : "江西", 37 : "山东", 41 : "河南", 42 : "湖北", 43 : "湖南", 44 : "广东", 45 : "广西", 46 : "海南", 50 : "重庆", 51 : "四川", 52 : "贵州", 53 : "云南", 54 : "西藏", 61 : "陕西", 62 : "甘肃", 63 : "青海", 64 : "宁夏", 65 : "新疆", 71 : "台湾", 81 : "香港", 82 : "澳门", 91 : "国外" }; var card = e.form.身份证号.value; //是否为空 function Card(Card) { if (card === \'\') { alert(\'证件号码不能为空!\'); return false; } //校验长度,类型 if (isCardNo(card) === false) { alert(\'您输入的证件号码不正确,请重新输入\'); return false; } //检查省份 if (checkProvince(card) === false) { alert(\'您输入的证件号码不正确,请重新输入\'); return false; } //校验生日 if (checkBirthday(card) === false) { alert(\'您输入的证件号码生日不正确,请重新输入\'); return false; } //检验位的检测 if (checkParity(card) === false) { alert(\'您的证件号码校验位不正确,请重新输入\'); return false; } return true; Card(Card) } //检查号码是否符合规范,包括长度,类型 isCardNo = function(card) { //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^d{15}$)|(^d{17}(d|X)$)/; if (reg.test(card) === false) { return false; } return true; }; //取身份证前两位,校验省份 checkProvince = function(card) { var province = card.substr(0, 2); if (vcity[province] == undefined) { return false; } return true; }; //检查生日是否正确 checkBirthday = function(card) { var len = card.length; //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字 if (len == \'15\') { var re_fifteen = /^(d{6})(d{2})(d{2})(d{2})(d{3})$/; var arr_data = card.match(re_fifteen); var year = arr_data[2]; var month = arr_data[3]; var day = arr_data[4]; var birthday = new Date(\'19\' + year + \'/\' + month + \'/\' + day); return verifyBirthday(\'19\' + year, month, day, birthday); } //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X if (len == \'18\') { var re_eighteen = /^(d{6})(d{4})(d{2})(d{2})(d{3})([0-9]|X)$/; var arr_data = card.match(re_eighteen); var year = arr_data[2]; var month = arr_data[3]; var day = arr_data[4]; var birthday = new Date(year + \'/\' + month + \'/\' + day); return verifyBirthday(year, month, day, birthday); } return false; }; //校验日期 verifyBirthday = function(year, month, day, birthday) { var now = new Date(); var now_year = now.getFullYear(); //年月日是否合理 if (birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) { //判断年份的范围(3岁到100岁之间) var time = now_year - year; if (time >= 3 && time <= 100) { return true; } return false; } return false; }; //校验位的检测 checkParity = function(card) { //15位转18位 card = changeFivteenToEighteen(card); var len = card.length; if (len == \'18\') { var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array(\'1\', \'0\', \'X\', \'9\', \'8\', \'7\', \'6\', \'5\', \'4\', \'3\', \'2\'); var cardTemp = 0, i, valnum; for (i = 0; i < 17; i++) { cardTemp += card.substr(i, 1) * arrInt[i]; } valnum = arrCh[cardTemp % 11]; if (valnum == card.substr(17, 1)) { return true; } return false; } return false; }; //15位转18位身份证号 changeFivteenToEighteen = function(card) { if (card.length == \'15\') { var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array(\'1\', \'0\', \'X\', \'9\', \'8\', \'7\', \'6\', \'5\', \'4\', \'3\', \'2\'); var cardTemp = 0, i; card = card.substr(0, 6) + \'19\' + card.substr(6, card.length - 6); for (i = 0; i < 17; i++) { cardTemp += card.substr(i, 1) * arrInt[i]; } card += arrCh[cardTemp % 11]; return card; } return card; }; } } })
|
||||
-- 作者:有点蓝 -- 发布时间:2022/8/2 14:04:00 -- 这种只能打开开发者工具,自己调试了 |
||||
-- 作者:浙江仔 -- 发布时间:2022/8/2 16:45:00 --
用这个试试 |
||||
-- 作者:cnsjroom -- 发布时间:2022/8/3 9:09:00 -- 回复:(浙江仔)[upload=txt,身份证号码校验js.txt]v... 测试了一下 输入错误身份证号与正确的证号 都提示alert("身份证号码不规范"); 这个消息 有没有办法修正呢? |
||||
-- 作者:有点蓝 -- 发布时间:2022/8/3 9:27:00 -- 建议调用现成的身份证校验接口判断,各大平台如阿里,腾讯,甚至公安部都有提供这种接口 |
||||
-- 作者:cnsjroom -- 发布时间:2022/8/3 10:26:00 -- 回复:(有点蓝)建议调用现成的身份证校验接口判断,... 因是内网使用 无法链接外网api接口 所以有点小麻烦 |
||||
-- 作者:有点蓝 -- 发布时间:2022/8/3 10:38:00 -- 使用ajax把身份证号码发到服务端判断 |
||||
-- 作者:浙江仔 -- 发布时间:2022/8/3 11:46:00 -- 以下是引用cnsjroom在2022/8/3 9:09:00的发言:
测试了一下 输入错误身份证号与正确的证号 都提示alert("身份证号码不规范"); 这个消息 有没有办法修正呢? 这个js我使用过大半年,没有出现这个问题,你要调试一下你自己的代码,是不是用错了 |