SpringMVC关于Validform实时校验身份证的作为账户的问题

此地址上有相关案例: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
        },
    });

});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值