首页 > 代码库 > 12306中前端验证身份证件(及其他证件号)的方法
12306中前端验证身份证件(及其他证件号)的方法
之前做一个门票预约系统的时候,需要用到身份证件的验证功能,第一个想法就是去12306网站上去参考验证方法,于是开始了第一步:
1.登录到12306网站->常用联系人->添加
试了一下,果然有证件号的验证,而且验证的情况还考虑比较周密。初步判断采用了什么验证插件。
2.Chrome下用开发人员工具查看JS代码
搜索关键词”身份证“,在一个JS文件中找到了:
将JS代码Copy下来,百度个JS格式化工具,格式化后JS代码如下:
jQuery.validator.addMethod("checkLoginUserName",function (j, g) { var i = false; var h = /^[A-Za-z]{1}([A-Za-z0-9]|[_]){0,29}$/; var f = /^((([a-z]|\d|[!#\$%&‘\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&‘\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i; if (h.test(j) || f.test(j)) { i = true } return this.optional(g) || i},"wrong username.");jQuery.validator.addMethod("requiredUserName",function (c, d) { if ("用户名/邮箱" == c) { return false } if (c == null || "" == c) { return false } return true},"wrong username.");jQuery.validator.addMethod("requiredSchoolName",function (c, d) { if ("简码/汉字" == c) { return false } if (c == null || "" == c) { return false } return true},"wrong schoolname.");jQuery.validator.addMethod("randCodeRequired",function (c, d) { $("#i-ok").css("display", "none"); return c.length > 0},"验证码错误!");jQuery.validator.addMethod("randCodeFormat",function (e, f) { $("#i-ok").css("display", "none"); var d = /^[a-zA-Z0-9]+$/; return this.optional(f) || d.test(e)},"验证码错误!");jQuery.validator.addMethod("randCodeLength",function (c, d) { $("#i-ok").css("display", "none"); return c.length == 4},"验证码错误!.");jQuery.validator.addMethod("integrationCheck",function (f, d) { var e = /^\d{6}$/; return this.optional(d) || e.test(f)},"wrong integrationpassword");jQuery.validator.addMethod("integrationPwdCheck",function (f, d, e) { if ($("#" + e[0]).val() == $("#" + e[1]).val()) { return true } return false},"两次输入密码不一致!.");jQuery.validator.addMethod("checkRandCode",function (f, g, e) { var h = true; if (f && f.length == 4) { $.ajax({ url: ctx + "passcodeNew/checkRandCodeAnsyn", type: "post", data: { randCode: f, rand: e }, async: false, success: function (a) { if (a.data =http://www.mamicode.com/="N") { h = false; $("#i-ok").css("display", "none") } else { h = true; $("#i-ok").css("display", "block") } } }) } else { h = false; $("#i-ok").css("display", "none") } return h},"验证码错误!.");jQuery.validator.addMethod("validateUsersName",function (c, d) { return this.optional(d) || /^[A-Za-z]{1}([A-Za-z0-9]|[_]){0,29}$/.test(c)},"用户名只能由字母、数字或_组成");jQuery.validator.addMethod("checkWriteSpace",function (e, f) { for (var d = 0; d < e.length; d++) { if (e.charCodeAt(d) == 32) { return false } } return true},"contain writespace");jQuery.validator.addMethod("validateRandCode",function (c, d) { return this.optional(d) || /^[a-zA-Z0-9]+$/.test(c)},"验证码错误!.");jQuery.validator.addMethod("checkPassward",function (g, h, j) { var f = true; for (var i = 0; i < g.length; i++) { if (g.charCodeAt(i) == 39 || g.charCodeAt(i) == 60 || g.charCodeAt(i) == 62) { f = false } if (!f) { break } } return this.optional(h) || f},"Passward wrong");function validateSecIdCard(n) { var d = 0; var l = n; var i = { 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: "国外" }; if (!/^\d{17}(\d|x)$/i.test(l)) { return false } l = l.replace(/x$/i, "a"); if (i[parseInt(l.substr(0, 2))] == null) { return false } var j = l.substr(6, 4) + "-" + Number(l.substr(10, 2)) + "-" + Number(l.substr(12, 2)); var m = new Date(j.replace(/-/g, "/")); if (j != (m.getFullYear() + "-" + (m.getMonth() + 1) + "-" + m.getDate())) { return false } for (var k = 17; k >= 0; k--) { d += (Math.pow(2, k) % 11) * parseInt(l.charAt(17 - k), 11) } if (d % 11 != 1) { return false } return true}function validateFirIdCard(n) { var d = 0; var l; var i = { 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: "国外" }; if (n.length == 15) { l = idCardUpdate(n) } else { l = n } if (!/^\d{17}(\d|x)$/i.test(l)) { return false } l = l.replace(/x$/i, "a"); if (i[parseInt(l.substr(0, 2))] == null) { return false } var j = l.substr(6, 4) + "-" + Number(l.substr(10, 2)) + "-" + Number(l.substr(12, 2)); var m = new Date(j.replace(/-/g, "/")); if (j != (m.getFullYear() + "-" + (m.getMonth() + 1) + "-" + m.getDate())) { return false } for (var k = 17; k >= 0; k--) { d += (Math.pow(2, k) % 11) * parseInt(l.charAt(17 - k), 11) } if (d % 11 != 1) { return false } return true}function idCardUpdate(m) { var k; var n = /^(\d){15}$/; if (n.test(m)) { var h = 0; var l = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var i = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"); m = m.substr(0, 6) + "19" + m.substr(6, m.length - 6); for (var j = 0; j < m.length; j++) { h += parseInt(m.substr(j, 1)) * l[j] } m += i[h % 11]; k = m } else { k = "#" } return k}jQuery.validator.addMethod("checkBorth",function (d, g) { var h = d; if (h == "") { return true } else { var i = h.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if (i == null) { return false } var j = new Date(i[1], i[3] - 1, i[4]); return (j.getFullYear() == i[1] && (j.getMonth() + 1) == i[3] && j.getDate() == i[4]) }},"日期格式不合法");jQuery.validator.addMethod("byteRangeLength",function (f, h, j) { var g = f.length; for (var i = 0; i < f.length; i++) { if (f.charCodeAt(i) > 127) { g++ } } return this.optional(h) || (g >= j[0] && g <= j[1])},"length wrong");jQuery.validator.addMethod("checkNameCharBlank",function (f, g, e) { var h = e.split("@"); if ($("#" + h[1]).val() == "") { return true } else { if ($("#" + h[0]).val() == "1" || $("#" + h[0]).val() == "2") { return this.optional(g) || /^[a-zA-Z·..\u3400-\u9FFF]+$/.test(f) } else { if ($("#" + h[0]).val() == "B" || $("#" + h[0]).val() == "H") { if (/^[-]+$/.test(f)) { return false } return this.optional(g) || /^[a-z A-Z·..\u3400-\u9FFF\-]+$/.test(f) } else { return this.optional(g) || /^[a-z A-Z·..\u3400-\u9FFF]+$/.test(f) } } }},"wrong name.");jQuery.validator.addMethod("checkIdValidStr",function (e, f) { var d = /^[a-zA-Z0-9\_\-\(\)]+$/; return this.optional(f) || (d.test(e))},"wrong id");jQuery.validator.addMethod("isSecIDCard",function (f, d, e) { if (!checkIfSecIdCard($(e).val())) { return true } return validateSecIdCard(f)},"wrong");function checkIfSecIdCard(b) { if (b == "1") { return true } return false}function checkIfFirIdCard(b) { if (b == "2") { return true } return false}function checkCardForHKorTW(b) { if (b == "C" || b == "G") { return true } return false}jQuery.validator.addMethod("isFirIDCard",function (f, d, e) { if (!checkIfFirIdCard($(e).val())) { return true } return validateFirIdCard(f)},"wrong");jQuery.validator.addMethod("checkHkongMacao",function (f, g, e) { if ($(e).val() == "C") { var h = /^[HMhm]{1}([0-9]{10}|[0-9]{8})$/; return this.optional(g) || (h.test(f)) } else { return true }},"wrong format.");jQuery.validator.addMethod("checkTaiw",function (g, i, j) { if ($(j).val() == "G") { var f = /^[0-9]{8}$/; var h = /^[0-9]{10}$/; return this.optional(i) || (f.test(g)) || (h.test(g)) } else { return true }},"wrong format.");jQuery.validator.addMethod("checkPassport",function (f, h, j) { if ($(j).val() == "B") { var g = /^[a-zA-Z]{5,17}$/; var i = /^[a-zA-Z0-9]{5,17}$/; return this.optional(h) || (i.test(f)) || g.test(f) } else { return true }},"wrong format.");jQuery.validator.addMethod("checkWork",function (f, h, j) { if ($(j).val() == "H") { var g = /^[a-zA-Z]{5,17}$/; var i = /^[a-zA-Z0-9]{5,17}$/; return this.optional(h) || (i.test(f)) || g.test(f) } else { return true }},"wrong format.");jQuery.validator.addMethod("isMobile",function (e, d) { var f = e.length; return this.optional(d) || (f == 11 && /^[0-9]+$/.test(e))},"wrong mobile phone ");jQuery.validator.addMethod("isTelePhone",function (f, d) { var e = /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^[0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}#)/; return this.optional(d) || (e.test(f))},"wrong telePhone ");jQuery.validator.addMethod("illegalChar",function (g, h, j) { var f = true; if (g.indexOf("$") >= 0) { return false } for (var i = 0; i < g.length; i++) { if (g.charCodeAt(i) == 39 || g.charCodeAt(i) == 60 || g.charCodeAt(i) == 62 || g.charCodeAt(i) == 34 || g.charCodeAt(i) == 63) { f = false } if (!f) { break } } return this.optional(h) || f},"Illegal char wrong");jQuery.validator.addMethod("isZipCode",function (e, f) { var d = /^[0-9]{6}$/; return this.optional(f) || (d.test(e))},"wrong zipcode");jQuery.validator.addMethod("isEmail",function (e, d) { var f = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; return this.optional(d) || (f.test(trim(e)))},"wrong email");function replaceChar(c) { var d = c.value.replace(/[‘"<> ?]/g, ""); c.value = d}function checkNameChar1(b) { return /^[a-zA-Z0-9\u3400-\u9FFF]+$/.test(b)}function trim(b) { return b.replace(/(^\s*)|(\s*$)/g, "")}function ltrim(b) { return b.replace(/(^\s*)/g, "")}function rtrim(b) { return b.replace(/(\s*$)/g, "")}jQuery.validator.addMethod("validateName",function (c, d) { return this.optional(d) || /^[a-zA-Z\u3400-\u9FFF0-9\_]+$/.test(c)},"wrong username.");jQuery.validator.addMethod("studentRequired",function (f, d, e) { if ($(e).val() == "3") { return f && trim(f) != "" } return true},"wrong studentRequired.");jQuery.validator.addMethod("studentStationRequired",function (f, d, e) { if ($(e).val() == "3") { return f && trim(f) != "简拼/全拼/汉字" && trim(f) != "" } return true},"wrong studentStationRequired.");jQuery.validator.addMethod("studentValidateName",function (f, d, e) { if ($(e).val() == "3") { return this.optional(d) || /^[a-zA-Z\u3400-\u9FFF0-9\_]+$/.test(f) } return true},"wrong username.");jQuery.validator.addMethod("checkStudentName",function (f, d, e) { if ($(e).val() == "3") { if ((!f || trim(f) == "" || trim(f) == "简码/汉字")) { return false } } return true},"wrong username.");jQuery.validator.addMethod("isQuestionNull",function (f, d, e) { if (jQuery.trim(f) != "") { if (jQuery.trim($(e[0]).val()) == "customQuestion" && jQuery.trim($(e[1]).val()) == "" || jQuery.trim($(e[0]).val()) == "") { return false } } return true},"you should input the question");jQuery.validator.addMethod("isAnswerNull",function (f, d, e) { if ((jQuery.trim($(e[0]).val()) == "customQuestion" && jQuery.trim($(e[1]).val()) != "") || (jQuery.trim($(e[0]).val()) != "")) { if (jQuery.trim(f) == "") { return false } } return true},"you should input the answer");function checkSex(e, f, d) { if (!checkSexByCardId(e, f, d)) { if (!confirm("性别与身份证中的性别不符,是否继续?")) { return false } else { return true } } else { return true }}function checkSexByCardId(g, j, i) { function h(a, e) { var b = null; if (e.length == 15) { b = e.substring(14, 15) } else { if (e.length == 18) { b = e.substring(16, 17) } else { return true } } if (b == "x" || b == "X") { b = "10" } var c = parseInt(b); var d = c % 2; if (d === 0 && a === "F") { return true } else { if (d === 1 && a === "M") { return true } else { return false } } } var f = $(i).val(); if (checkIfSecIdCard($(j).val()) && validateSecIdCard(f)) { if (f !== "") { return h(g, f) } else { return true } } else { if (checkIfFirIdCard($(j).val()) && validateFirIdCard(f)) { if (f !== "") { return h(g, f) } else { return true } } else { return true } }}function checkBirdDateByCardId(g, j, h) { var i = null; var f = $(h).val(); if (checkIfSecIdCard($(j).val()) && f !== "" && validateSecIdCard(f)) { i = f.substring(6, 14) } else { if (checkIfFirIdCard($(j).val()) && f !== "" && validateFirIdCard(f)) { if (f.length == 15) { i = "19" + f.substring(6, 12) } else { if (f.length == 18) { i = f.substring(6, 14) } } } else { return true } } if (g !== "") { g = g.replace(/-/g, ""); if (g != i) { return false } else { return true } } else { return true }}function checkBirdate(e, f, d) { if (!checkBirdDateByCardId(e, f, d)) { if (!confirm("出生日期与身份证中的出生日期不符,是否继续?")) { return false } else { return true } } else { return true }}jQuery.validator.addMethod("checkPwdValidate",function (c, d) { return this.optional(d) || /(?![a-z]+$|[0-9]+$|_+$)^[a-zA-Z0-9_]{6,}$/.test(c)},"contain writespace");jQuery.validator.addMethod("checkConfirmPassWard",function (f, d, e) { if ($(e).val() != null) { return $(e).val() == f } return true},"contain writespace");jQuery.validator.addMethod("IVR_passwd_format",function (f, d) { var e = /^[0-9]{6}$/; return this.optional(d) || e.test(f)},"验证码错误!.");jQuery.validator.addMethod("checkStation",function (c, d) { if ((!c || trim(c) == "" || trim(c) == "简拼/全拼/汉字" || trim(c) == "简拼/全拼/汉字或↑↓")) { return false } return true},"wrong username.");jQuery.validator.addMethod("checkAnsyUserName",function (l, h, k) { var i = k[0]; var g = $("#" + k[1]).val(); var j = true; $.ajax({ url: i + "?user_name=" + l, type: "get", async: false, success: function (b, a) { if (b.data =http://www.mamicode.com/= true) { j = false } else { j = true } }, error: function (a, b, c) { j = false } }); return j},"wrong cardNo");function checkPwdRank(j, i, f) { var h = $(j); var g = h.val(); if (g.length <= 6 || new RegExp("^[a-zA-Z]{6,}$").test(g) || new RegExp("^[0-9]{6,}$").test(g) || new RegExp("^[_]{6,}$").test(g)) { $("#" + i).attr("title", "危险"); $("#" + f).html("危险"); $("#" + i).removeClass("rank-a"); $("#" + i).removeClass("rank-b"); $("#" + i).removeClass("rank-c"); $("#" + i).addClass("rank-a") } else { if (g.length > 6 && new RegExp("[a-zA-Z]").test(g) && new RegExp("[0-9]").test(g) && new RegExp("[_]").test(g)) { $("#" + i).attr("title", "安全"); $("#" + f).html("安全"); $("#" + i).removeClass("rank-a"); $("#" + i).removeClass("rank-b"); $("#" + i).removeClass("rank-c"); $("#" + i).addClass("rank-c") } else { $("#" + i).attr("title", "一般"); $("#" + f).html("一般"); $("#" + i).removeClass("rank-a"); $("#" + i).removeClass("rank-b"); $("#" + i).removeClass("rank-c"); $("#" + i).addClass("rank-b") } }}Array.prototype.unique = function () { var f = {}, d = this.length; for (var e = 0; e < d; e++) { if (typeof f[this[e]] == "undefined") { f[this[e]] = 1 } } this.length = 0; d = 0; for (var e in f) { this[d++] = e } return this};function checkSearchPwdRank(p, m, i) { var k = $(p); var j = k.val(); if (j.length < 6) { $("#" + m).attr("title", "危险"); $("#" + i).html("危险"); $("#" + m).removeClass("rank-a"); $("#" + m).removeClass("rank-b"); $("#" + m).removeClass("rank-c"); $("#" + m).addClass("rank-a") } else { var o = []; for (var n = 0; n < 6; n++) { o.push(j.charAt(n)) } o = o.unique(); var l = o.length; if (l == 1) { $("#" + m).attr("title", "危险"); $("#" + i).html("危险"); $("#" + m).removeClass("rank-a"); $("#" + m).removeClass("rank-b"); $("#" + m).removeClass("rank-c"); $("#" + m).addClass("rank-a") } else { if (l > 1 && l < 5) { $("#" + m).attr("title", "一般"); $("#" + i).html("一般"); $("#" + m).removeClass("rank-a"); $("#" + m).removeClass("rank-b"); $("#" + m).removeClass("rank-c"); $("#" + m).addClass("rank-b") } else { $("#" + m).attr("title", "安全"); $("#" + i).html("安全"); $("#" + m).removeClass("rank-a"); $("#" + m).removeClass("rank-b"); $("#" + m).removeClass("rank-c"); $("#" + m).addClass("rank-c") } } }}jQuery.validator.addMethod("checkDetailAddress",function (c, d) { return this.optional(d) || /^[0-9a-zA-Z\u3400-\u9FFF\#]+$/.test(c)},"wrong name.");jQuery.validator.addMethod("checkAddressName",function (c, d) { if (/^[-]+$/.test(c)) { return false } return this.optional(d) || /^[a-z A-Z·..\u3400-\u9FFF\-]+$/.test(c) || /^[a-zA-Z·..\u3400-\u9FFF]+$/.test(c)},"wrong name.");jQuery.validator.addMethod("checkAddressSelect",function (c, d) { if ("" == c) { return false } if (c) { return true } return this.optional(d)},"wrong name."); (function () { $(document).ready(function () { $.sidebar_init(7); if ("3" != isStudent) { $("#_stu_infor").hide() } $("#passengerType").on("change", function () { if ($(this).val() == "3") { $("#_stu_infor").show(800) } else { $("#_stu_infor").hide(800) } }); $._initForm(); $._show_id_no(); $._show_mobile_no(); initNameNotice() }); var b = new dhtmlXWindows(); b.enableAutoViewport(true); b.setSkin("dhx_terrace"); b.setImagePath(ctx + "resources/js/rich/windows/imgs/"); jQuery.extend({ cancelAdd: function () { otsRedirect("post", ctx + "passengers/init") }, _toAdd: function () { $("#_addForm").submit() }, _show_id_no: function () { $("#cardCode").on("focus", function () { var e = $("#cardCode").val(); if (e != "") { var f = ""; var a = e.length; if (e.length <= 3) { f = e } else { if (a <= 6) { f = e.substring(0, 3) + " " + e.substring(3, a) } else { if (a <= 10) { f = e.substring(0, 3) + " " + e.substring(3, 6) + " " + e.substring(6, a) } else { if (a <= 14) { f = e.substring(0, 3) + " " + e.substring(3, 6) + " " + e.substring(6, 10) + " " + e.substring(10, a) } else { f = e.substring(0, 3) + " " + e.substring(3, 6) + " " + e.substring(6, 10) + " " + e.substring(10, 14) + " " + e.substring(14, a) } } } } $("#passenger_id_no_div").html(f); $("#passenger_id_no_div").css("display", "block") } else { $("#passenger_id_no_div").html(""); $("#passenger_id_no_div").css("display", "none") } }); $("#cardCode").on("keyup", function () { $("#passenger_id_no_div").css("display", "block"); var e = $("#cardCode").val(); var f = ""; var a = e.length; if (e.length <= 3) { f = e } else { if (a <= 6) { f = e.substring(0, 3) + " " + e.substring(3, a) } else { if (a <= 10) { f = e.substring(0, 3) + " " + e.substring(3, 6) + " " + e.substring(6, a) } else { if (a <= 14) { f = e.substring(0, 3) + " " + e.substring(3, 6) + " " + e.substring(6, 10) + " " + e.substring(10, a) } else { f = e.substring(0, 3) + " " + e.substring(3, 6) + " " + e.substring(6, 10) + " " + e.substring(10, 14) + " " + e.substring(14, a) } } } } $("#passenger_id_no_div").html(f) }); $("#cardCode").on("blur", function () { $("#passenger_id_no_div").html(""); $("#passenger_id_no_div").css("display", "none") }) }, _show_mobile_no: function () { $("#mobileNo").on("focus", function () { var e = $("#mobileNo").val(); if (e != "") { var f = ""; var a = e.length; if (e.length <= 3) { f = e } else { if (a <= 7) { f = e.substring(0, 3) + " " + e.substring(3, a) } else { f = e.substring(0, 3) + " " + e.substring(3, 7) + " " + e.substring(7, a) } } $("#mobile_no_div").html(f); $("#mobile_no_div").css("display", "block") } else { $("#mobile_no_div").html(""); $("#mobile_no_div").css("display", "none") } }); $("#mobileNo").on("keyup", function () { $("#mobile_no_div").css("display", "block"); var e = $("#mobileNo").val(); var f = ""; var a = e.length; if (e.length <= 3) { f = e } else { if (a <= 7) { f = e.substring(0, 3) + " " + e.substring(3, a) } else { f = e.substring(0, 3) + " " + e.substring(3, 7) + " " + e.substring(7, a) } } $("#mobile_no_div").html(f) }); $("#mobileNo").on("blur", function () { $("#mobile_no_div").html(""); $("#mobile_no_div").css("display", "none") }) }, _initForm: function () { $("#_addForm").validate({ rules: { passenger_name: { required: true, byteRangeLength: [3, 30], checkNameCharBlank: "cardType@cardCode" }, sex_code: { required: true }, passenger_id_no: { required: true, checkIdValidStr: true, isSecIDCard: "#cardType", isFirIDCard: "#cardType", checkHkongMacao: "#cardType", checkTaiw: "#cardType", checkPassport: "#cardType" }, email: { isEmail: true, byteRangeLength: [0, 30] }, mobile_no: { isMobile: true }, phone_no: { isTelePhone: true }, address: { illegalChar: true, byteRangeLength: [0, 200] }, postalcode: { isZipCode: true }, "studentInfoDTO.school_name": { checkStudentName: "#passengerType" }, "studentInfoDTO.department": { studentValidateName: "#passengerType", byteRangeLength: [0, 30] }, "studentInfoDTO.school_class": { studentValidateName: "#passengerType", byteRangeLength: [0, 30] }, "studentInfoDTO.student_no": { studentRequired: "#passengerType", studentValidateName: "#passengerType", byteRangeLength: [0, 30] }, "studentInfoDTO.preference_from_station_name": { checkStudentName: "#passengerType" }, "studentInfoDTO.preference_to_station_name": { checkStudentName: "#passengerType" }, "studentInfoDTO.preference_card_no": { studentValidateName: "#passengerType", byteRangeLength: [0, 30] }, "studentInfoDTO.enter_year": { studentRequired: "#passengerType" } }, messages: { passenger_name: { required: "请输入您的姓名!", byteRangeLength: jQuery.format("允许输入的字符串在{0}-{1}个字符之间!"), checkNameCharBlank: "姓名只能包含中文或者英文,如有生僻字或繁体字参见姓名填写规则进行填写!" }, sex_code: { required: "请选择性别" }, passenger_id_no: { required: "请输入证件号码!", isSecIDCard: jQuery.format("请正确输入18位的身份证号!"), isFirIDCard: jQuery.format("请正确输入15或者18位的身份证号!"), checkIdValidStr: "输入的证件编号中包含中文信息或特殊字符!", checkHkongMacao: "请输入有效的港澳居民通行证号码!", checkTaiw: "请输入有效的台湾居民通行证号码!", checkPassport: "请输入有效的护照号码!" }, email: { isEmail: "请输入有效的电子邮件地址!", byteRangeLength: jQuery.format("允许输入的字符串在{0}-{1}个字符之间!") }, mobile_no: { isMobile: "您输入的手机号码不是有效的格式!" }, phone_no: { isTelePhone: "您输入的固定电话格式不正确!" }, address: { illegalChar: "您输入的地址中含有非法字符!", byteRangeLength: jQuery.format("允许输入的字符串在{0}-{1}个字符之间!") }, postalcode: { isZipCode: "您输入的邮编不是有效的格式!" }, "studentInfoDTO.school_name": { checkStudentName: "请选择学校名称" }, "studentInfoDTO.department": { studentValidateName: "院系只能包含中文、英文、数字!", byteRangeLength: jQuery.format("允许输入的字符串在{0}-{1}个字符之间!") }, "studentInfoDTO.school_class": { studentValidateName: "班级只能包含中文、英文、数字!", byteRangeLength: jQuery.format("允许输入的字符串在{0}-{1}个字符之间!") }, "studentInfoDTO.student_no": { studentRequired: "请输入学号", studentValidateName: "学号只能包含中文、英文、数字!", byteRangeLength: jQuery.format("允许输入的字符串在1-{1}个字符之间!") }, "studentInfoDTO.preference_from_station_name": { checkStudentName: "请输入优惠区间!" }, "studentInfoDTO.preference_to_station_name": { checkStudentName: "请输入优惠区间!" }, "studentInfoDTO.preference_card_no": { studentValidateName: "优惠卡号只能包含中文、英文、数字!", byteRangeLength: jQuery.format("允许输入的字符串在{0}-{1}个字符之间!") }, "studentInfoDTO.enter_year": { studentRequired: "请输入入学年份 " } }, errorPlacement: function (a, d) { if (d.attr("name") == "passenger_name") { a.insertAfter(d.parent().parent()); d.parent().parent().next().css("margin-left", d.parent().position().left) } else { if (d.attr("name") == "sex_code") { a.insertAfter(d.parent().parent()); d.parent().parent().next().css("margin-left", "130px") } else { if (d.attr("name") == "studentInfoDTO.preference_from_station_name" || d.attr("name") == "studentInfoDTO.preference_to_station_name") { if (d.parent().parent().siblings().length == 8) { a.insertAfter(d.parent().parent()); d.parent().parent().parent().children("label").css("margin-left", "270px") } } else { a.insertAfter(d.parent()); d.parent().next().css("margin-left", "2px").css("line-height", "30px") } } } }, submitHandler: function (i) { var j = null; $("input[name=sex_code]").each(function () { if (this.checked) { j = this.value } }); var k = $("#cardType").val(); var h = $("#nation").val(); if (k == "C" || k == "G" || k == "1" || k == "2") { if (h != "CN") { dhtmlx.alert({ title: "输入错误", ok: "确认", text: "请填写正确的国家/地区", type: "alert-error", callback: function () { } }); return false } } if (checkSex(j, "#cardType", "#cardCode")) { var l = $("#preference_from_station_name").val(); if (l = "简码/汉字") { l = "" } var a = $("#preference_to_station_name").val(); if (a = "简码/汉字") { a = "" } $.ajax({ url: ctx + "passengers/add", type: "post", data: { passenger_name: $("#name").val(), old_passenger_name: $("#oldName").val(), sex_code: j, _birthDate: null, country_code: $("#nation").val(), passenger_id_type_code: $("#cardType").val(), old_passenger_id_type_code: $("#oldCardType").val(), passenger_id_no: $("#cardCode").val(), old_passenger_id_no: $("#oldCardCode").val(), mobile_no: $("#mobileNo").val(), phone_no: $("#phoneNo").val(), email: $("#email").val(), address: $("#address").val(), postalcode: $("#zipCode").val(), passenger_type: $("#passengerType").val(), "studentInfoDTO.province_code": $("#province_code").val(), "studentInfoDTO.school_code": $("#schoolCode").val(), "studentInfoDTO.school_name": $("#schoolNameText").val(), "studentInfoDTO.department": $("#department").val(), "studentInfoDTO.school_class": $("#school_class").val(), "studentInfoDTO.student_no": $("#student_no").val(), "studentInfoDTO.school_system": $("#school_system").val(), "studentInfoDTO.enter_year": $("#enter_year").val(), "studentInfoDTO.preference_card_no": $("#preference_card_no").val(), "studentInfoDTO.preference_from_station_name": l, "studentInfoDTO.preference_from_station_code": $("#preferenceFromStationCode").val(), "studentInfoDTO.preference_to_station_name": a, "studentInfoDTO.preference_to_station_code": $("#preferenceToStationCode").val() }, success: function (c) { if (c.status) { if (c.data.flag) { dhtmlx.alert({ title: "添加常用联系人", ok: "确定", text: "添加成功!", type: "dhtmlx_popup_title", callback: function () { otsRedirect("post", ctx + "passengers/init") } }) } else { dhtmlx.alert({ title: "添加常用联系人", ok: "确定", text: c.data.message, type: "alert-error" }) } } } }) } } }) } })})();
其中几个基本的验证方法都有了,相信12306的验证方法是很权威的吧。
validateSecIdCard 是验证二代身份证的方法:
function validateSecIdCard(n) { var d = 0; var l = n; var i = { 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: "国外" }; if (!/^\d{17}(\d|x)$/i.test(l)) { return false } l = l.replace(/x$/i, "a"); if (i[parseInt(l.substr(0, 2))] == null) { return false } var j = l.substr(6, 4) + "-" + Number(l.substr(10, 2)) + "-" + Number(l.substr(12, 2)); var m = new Date(j.replace(/-/g, "/")); if (j != (m.getFullYear() + "-" + (m.getMonth() + 1) + "-" + m.getDate())) { return false } for (var k = 17; k >= 0; k--) { d += (Math.pow(2, k) % 11) * parseInt(l.charAt(17 - k), 11) } if (d % 11 != 1) { return false } return true}
其他几种证件的验证方法,需要的参照源码提取吧:
jQuery.validator.addMethod("checkHkongMacao",function (f, g, e) { if ($(e).val() == "C") { var h = /^[HMhm]{1}([0-9]{10}|[0-9]{8})$/; return this.optional(g) || (h.test(f)) } else { return true }},"wrong format.");jQuery.validator.addMethod("checkTaiw",function (g, i, j) { if ($(j).val() == "G") { var f = /^[0-9]{8}$/; var h = /^[0-9]{10}$/; return this.optional(i) || (f.test(g)) || (h.test(g)) } else { return true }},"wrong format.");jQuery.validator.addMethod("checkPassport",function (f, h, j) { if ($(j).val() == "B") { var g = /^[a-zA-Z]{5,17}$/; var i = /^[a-zA-Z0-9]{5,17}$/; return this.optional(h) || (i.test(f)) || g.test(f) } else { return true }}
简单的分享给大家,没有仔细验证过。
12306中前端验证身份证件(及其他证件号)的方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。