zoukankan      html  css  js  c++  java
  • 验证身份证和护照

       jQuery.validator.addMethod("validateSpecialCard", function (value, element, param) {
            if ($(param).val() == 'PZT_ZJLX001'){ //传到这里param
                return sfz(value);
            } else if($(param).val() == 'PZT_ZJLX002'){
                return checknumber(value);
            }else{
                return true;
            }
        }, "请输入正确的证件号码");
     $('#talentInfoForm').validate({
    
            errorElement: 'div',
            errorClass: 'help-block',
            focusInvalid: false,
            ignore: "",
            rules: {
                fullName: {required: true},
                certificaType: {required: true},
                certificaNo: {
                    required: true,
                    validateSpecialCard: '#certificaType'                        //这里是把页面上的id传进去
                },
                contactPEmail: {email: true},
                email: {email: true},
                fixedNo: {numValidate: true},
                mobileNo: {numValidate: true},
                fax: {numValidate: true},
                contactPFixedNo: {numValidate: true},
                contactPMobileNo: {numValidate: true}
            },
            messages: {
                fullName: "请填写姓名",
                certificaType: "请选择证件类型",
                certificaNo: {
                    required : "请填写证件号"
                },
                contactPEmail: "请输入正确的邮箱",
                email: "请输入正确的邮箱"
            },
    ///////////身份证
    function sfz(num) {
        if (!(/(^d{15}$)|(^d{17}([0-9]|X)$)/.test(num))) {
            return false;
        }
        var len, re;
        len = num.length;
        if (len == 15) {
            re = new RegExp(/^(d{6})(d{2})(d{2})(d{2})(d{3})$/);
            var arrSplit = num.match(re);
            var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
            var bGoodDay;
            bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
            if (!bGoodDay) {
                return false;
            } else {
                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 nTemp = 0,
                    i;
                num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
                for (i = 0; i < 17; i++) {
                    nTemp += num.substr(i, 1) * arrInt[i];
                }
                var validateCode = arrCh[nTemp % 11];
                return validateCode == num.substr(17, 1);
            }
        }
        if (len == 18) {
            re = new RegExp(/^(d{6})(d{4})(d{2})(d{2})(d{3})([0-9]|X)$/);
            var arrSplit = num.match(re);
    
            var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
            var bGoodDay;
            bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
            if (!bGoodDay) {
                return false;
            } else {
                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 nTemp = 0,
                    i;
                for (i = 0; i < 17; i++) {
                    nTemp += num.substr(i, 1) * arrInt[i];
                }
                var valnum = arrCh[nTemp % 11];
                return valnum == num.substr(17, 1);
            }
        }
        return false;
    }
    //检查身份证
    
    //验证护照是否正确
    function checknumber(number){
        var str=number;
    //在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
        var Expression=/(Pd{7})|(Gd{8})/;
        var objExp=new RegExp(Expression);
        if(objExp.test(str)==true){
            return true;
        }else{
            return false;
        }
    };
  • 相关阅读:
    SpringMVC什么时候配置 视图解析器
    打印数组的5种方式
    集合区别(list和linkedlist的区别)?
    回归测试
    dom4j组装xml 以及解析xml
    java操作文件创建、删除
    powerdesigner里的table背景色是不是可以修改的?
    如何设定editplus为txt默认打开程序?
    PowerDesigner怎样才能在修改表的字段Name的时候Code不自动跟着变
    PowerDesigner怎么调出工具箱?
  • 原文地址:https://www.cnblogs.com/xuerong/p/5684138.html
Copyright © 2011-2022 走看看