此地址上有相关案例:http://validform.rjboy.cn/(看不懂别怪我)
前端代码,例如:
<div class="f-fl item-ifo item-sfz">
<input type="text" name="username" id="adminNo" value="${requestScope.userInfo.userName}" class="txt03 f-r3 required" datatype="idcard" nullmsg="请您填写身份证号码!" errormsg="您填写的身份证号码不对!" />
</div>
关于身份证实时校验问题,例如:
$(function() {
var demo = $("#registerForm").Validform({
tiptype: 3,
label: "td",
ignoreHidden: true,
showAllError: true,
ajaxPost: true,
datatype: {
"zh1-6": /^[\u4E00-\u9FA5\uf900-\ufa2d]{1,6}$/, //中文
"ucsc": /[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/, //统一社会信用代码
"sn": /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, //金额,>=0保留两位小数
"zyw":/^[\u0391-\uFFE5A-Za-z]{2,}$/, //至少2位中文或者字母
"pwd":/^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{6,19}$/,//必须有数字和字母组合6-20位
"an":/^[0-9a-zA-Z]+$/, //字母和数字组合
"telMove":/^(0|86|17951)?(13[0-9]|15[012356789]|16[6]|19[89]]|17[01345678]|18[0-9]|14[579])[0-9]{8}$/,
"idcard":function(gets,obj,curform,datatype){ //身份证
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];// 加权因子;
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份证验证位值,10代表X;
var result = '身份证号已存在';
var username=$("#adminNo").val();
var code = '' //定义空变量
var urlUser ="${pageContext.request.contextPath}/ouser/ocheckregisterusername.html?username="+ username; //通过ajax请求地址
$.ajax({
async:false,//
type:"get",
url:urlUser,
success:function (data) {
code = data.error //接口成功之后返回来的值
},
});
if(code == result){//判断如果code 等于result
return result
}else{
return true
}
if (gets.length == 15) {
return isValidityBrithBy15IdCard(gets);
}else if (gets.length == 18){
var a_idCard = gets.split("");// 得到身份证数组
if (isValidityBrithBy18IdCard(gets)&&isTrueValidateCodeBy18IdCard(a_idCard)) {
return true;
}
return false;
}
return false;
function isTrueValidateCodeBy18IdCard(a_idCard) {
var sum = 0; // 声明加权求和变量
if (a_idCard[17].toLowerCase() == 'x') {
a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作
}
for ( var i = 0; i < 17; i++) {
sum += Wi[i] * a_idCard[i];// 加权求和
}
valCodePosition = sum % 11;// 得到验证码所位置
if (a_idCard[17] == ValideCode[valCodePosition]) {
return true;
}
return false;
}
function isValidityBrithBy18IdCard(idCard18){
var year = idCard18.substring(6,10);
var month = idCard18.substring(10,12);
var day = idCard18.substring(12,14);
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
// 这里用getFullYear()获取年份,避免千年虫问题
if(temp_date.getFullYear()!=parseFloat(year) || temp_date.getMonth()!=parseFloat(month)-1 || temp_date.getDate()!=parseFloat(day)){
return false;
}
return true;
}
function isValidityBrithBy15IdCard(idCard15){
var year = idCard15.substring(6,8);
var month = idCard15.substring(8,10);
var day = idCard15.substring(10,12);
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
// 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
if(temp_date.getYear()!=parseFloat(year) || temp_date.getMonth()!=parseFloat(month)-1 || temp_date.getDate()!=parseFloat(day)){
return false;
}
return true;
}
},
},
callback:function(form){
//在验证成功后,表单提交前执行的函数,curform参数是当前表单对象。
//这里明确return false的话表单将不会提交;
registerSubmit();
$("#Validform_msg").css("display","none")
return false
},
});
});