之前做一个门票预约系统的时候,需要用到身份证件的验证功能,第一个想法就是去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 == "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 == 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"})}}}})}}})}})
})();

View Code

其中几个基本的验证方法都有了,相信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
}

View Code

其他几种证件的验证方法,需要的参照源码提取吧:

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}
}

View Code

简单的分享给大家,没有仔细验证过。

转载于:https://www.cnblogs.com/wxt-home/p/4210652.html

12306中前端验证身份证件(及其他证件号)的方法相关推荐

  1. 如何在mysql查询结果集中得到记录行号_MySQL中在查询结果集中得到记录行号的方法...

    如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数. Oracle 中可以使用标准 ...

  2. mapper.xml中大于、小于、不等于号的方法

    目录 一.背景 二.解决方案一:使用转义字符 三.解决方案二: 四.参考文献 一.背景 项目中有一个联合查询的SQL一直很慢,总感觉无法再继续优化了,实际上还是有继续优化的方案的.具体方案如下:1.将 ...

  3. asp.net中的窗体身份验证

    入门 在创建网站中,常常会使用到身份验证.asp.net中内置了几种身份验证的方式,如Windows.Froms.Passport等.这几种身份 验证的方式各有不同.一般来说,网站的身份验证方式都会经 ...

  4. asp.net中的窗体身份验证(最简单篇)

    在创建网站中,常常会使用到身份验证.asp.net中内置了几种身份验证的方式,如Windows.Froms.Passport等.这几种身份验证的方式各有不同.一般来说,网站的身份验证方式都会经过以下几 ...

  5. asp.net中的窗体身份验证(分目录验证篇)

    在上一篇博文<asp.net中的窗体身份验证(最简单篇)>中的身份验证虽然很简单,但是有一个缺点,就是访问整个网站都必须要经过身份验证,而事实上,很多网站都不会这么要求的. 比如一个新闻系 ...

  6. 如何在Python Django中处理用户身份验证

    by Mohammed Subhan Khan 由Mohammed Subhan Khan 如何在Python Django中处理用户身份验证 (How to handle user authenti ...

  7. azure云数据库_在Azure SQL数据库中配置多重身份验证

    azure云数据库 介绍 (Introduction) The new SSMS 17.2 allows users to authenticate using Active Directory wi ...

  8. Windows10家庭版 解决IIS 万维网安全中没有Windows身份验证

    Windows10家庭版 解决IIS 万维网服务安全性中没有Windows身份验证(Windows Authentication) 打开启动或关闭Windows功能,IIS菜单下万维网服务的安全性缺少 ...

  9. ntlm java_Web应用程序中的NTLM身份验证(java)

    我正在使用以下过滤器在我的Web应用程序中启用NTLM身份验证. 我得到Windows浏览器身份验证提示.运行正常.除了以下事实外- 我无法确定身份验证是成功还是失败! * 两种情况均无错误. *在每 ...

  10. shiro中的验证用户身份认证以及授权

    目录 1.运用shiro进行用户身份认证: 1.1导入基于Shiro的数据库脚本 1.2.引入依赖(shiro-1.4.1) shiro-core  shiro-web  shiro-spring 1 ...

最新文章

  1. matplotlib可视化时间序列数据、并高亮时间序列中的指定区域(Highlight a Region of Time-Series Plot with Matplotlib)
  2. 中文数据集有奖公开征集
  3. [PKUWC2018][loj2541]猎人杀
  4. 聚类分析 - K-means - Python代码实现
  5. vue 修改模板{{}}标签_vue-admin-template模板添加tagsview
  6. c语言变量申明和定义区别,C语言中变量定义与声明的区别
  7. 安卓阵营最强Soc!骁龙898即将亮相:小米12系列本月底前后首发
  8. 美国数学家维纳智力早熟,11岁就上了大学,他曾在1935-1936年 应邀参加中国清华大学讲学,一次他参加某个重要会议,年轻的脸孔 引人注意,于是有人询问他的年龄,他回答说“我年龄的立方是个4位数
  9. Date 当前程序日期格式 参数设置 DecimalSeparator
  10. W3CSchool离线手册文档
  11. SaaS-HRM 需求分析
  12. 图像标注工具labelImg使用
  13. 如何获取Android手机连接当前网络的外网IP
  14. 基于 vue-element-admin 基础模板实现侧边栏菜单动态渲染
  15. 蜂窝移动终端的Cat指的是什么?
  16. C++语法(二十)常函数、常对象
  17. 5. C++ 抽象类
  18. Uc_client与ucenter通信原理
  19. 全部资源,都在这里了
  20. win10找不到打印机_新版Windows 10的外设Bug:重启后找不到USB打印机端口

热门文章

  1. oeasy教您玩转vim - 88 - # 自动命令autocmd
  2. 大学英语B---词汇与语法
  3. 怎么做超链接html,HTML怎么做超链接
  4. 香港服务器的数据泄露是什么?怎样预防?
  5. Unity Scene视图介绍
  6. 十五年学不会英语的原因
  7. python量化交易入门教程_搞金融的同学三小时快速入门python从零入门量化交易系列...
  8. JavaWeb笔记——JSPThymeleaf
  9. Android下磁盘分区表损坏,硬盘分区表丢失错误怎么修复TestDisk使用教程
  10. 使用逐浪CMS识别图片文字-揭秘新逐浪CMS之OCR识图功能