zoukankan      html  css  js  c++  java
  • js校验身份证

    1

    <%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%@taglib prefix="rdp" uri="http://www.szfesc.cn/rdp" %>
    
    <!DOCTYPE html>
    <html lang="zh-cn">
    <head>
    <title>新增客户黑名单信息</title>
    <script type="text/javascript">
        //去掉无证件下拉选择项
        $(document).ready(function() {
            $('#certTypes option[value="00"]').remove();
        });
        
        //提交表单时校验
        function checkSubForm(){
            var obj = $('#myForm'),
                certyType = $.trim($('#certTypes option:selected').val()),
                chgflag = false;
            console.log(certyType);
            //验证身份证格式
            if(certyType == '01'){
                var idcard = $.trim($('#certno').val());
                if(idcard.length !=0 ){
                    chgflag = isIdCardNo(idcard)
                }
                if(!chgflag){
                    $('#certno').focus();
                    return false;
                }
            }
            obj.submit();
            return true;
        }
    </script>
    </head>
    <body>
        <div class="row">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <span class="glyphicon glyphicon-plus"></span>
                    新增客户黑名单信息
                </div>
                
                <div class="panel-body">
                    <form class="form-horizontal rdpForm" role="form" id="myForm"
                        action="${ctx }/riskmgr/custblacklist/create" method="post" enctype="multipart/form-data">
                        <div class="form-group">
                            <label for="certtype" class="col-sm-2 control-label"><span>*</span>
                                证件类型</label>
                            <div class="col-sm-3">
                                <rdp:dictForm class="form-control" sectionId="certType" required="true"
                                    selectedValue="${cblParam.certtype }" name="certtype"  id="certTypes"
                                    emptyOptionLabel="----请选择----"  showValue="false" emptyOption="false"/>
                            </div>
                            <rdp:token />
                        </div>
                        <div class="form-group">
                            <label for="certno" class="col-sm-2 control-label"><span>*</span>
                                证件号</label>
                            <div class="col-sm-3">
                                <input type="text" class="form-control" name="certno" id="certno"
                                    placeholder="证件号" required numberLetter="true"
                                    lengthlimit="32" value="${cblParam.certno }">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="clientname" class="col-sm-2 control-label"><span>*</span>
                                姓名</label>
                            <div class="col-sm-3">
                                <input type="text" class="form-control" name="clientname"
                                    placeholder="姓名" required
                                    lengthlimit="120" value="${cblParam.clientname }">
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="reasoncode" class="col-sm-2 control-label"><span>*</span>
                                录入原因码</label>
                            <div class="col-sm-3">
                                <rdp:dictForm sectionId="custBlacklistReasonCode" required="true" class="form-control" 
                                    name="reasoncode" selectedValue="${cblParam.reasoncode}" 
                                    emptyOptionLabel="----请选择----" emptyOption="false"/>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="blackreason" class="col-sm-2 control-label"><span>*</span>
                                录入原因</label>
                            <div class="col-sm-8">
                                <textarea rows="3"  class="form-control" name="blackreason" required="true"  lengthlimit="512" placeholder="只允许输入不超过512个字符!">${cblParam.blackreason }</textarea>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="context" class="col-sm-2 control-label">附件<a href="#" onclick="addFileInput();" title="新增附件" ><span class="glyphicon glyphicon-plus"></span></a></label>
                            <div class="col-sm-8">
                                <input type="hidden" name="filetype" value="11"/>
                                <input type="file" multiple="multiple" class="form-control" filetype="*.pdf;*.txt;*.doc;*.docx;*.xls;*.xlsx;*.jpg;*.jpeg;*.gif;*.png;*.bmp" name="uploadfile" placeholder="附件" value="" />
                                <span id="fileLabelId" style="color:#7B7B7B;">支持格式:*.pdf;*.txt;*.doc;*.docx;*.xls;*.xlsx;*.jpg;*.jpeg;*.gif;*.png;*.bmp;限制100M以内。</span>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="memo" class="col-sm-2 control-label">备注</label>
                            <div class="col-sm-8">
                                <textarea rows="5" cols="10" class="form-control" name="memo" lengthlimit="254" placeholder="只允许输入不超过254个字符!">${sysParam.memo }</textarea>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="col-sm-offset-2 col-sm-10">
                                <button type="submit" class="btn btn-success" onclick="return checkSubForm();">保存</button>
                                <a href="${ctx }/riskmgr/custblacklist?${qryStr}" class="btn btn-default">取消</a>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </body>
    </html>

    1

    /**
     * 身份证认证
     * @param {Object} num
     * @return {TypeName} 
     */
    function isIdCardNo(num){   
       num = num.toUpperCase();   
       //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。    
       if (!(/(^d{15}$)|(^d{17}([0-9]|X)$)/.test(num))){  
           alert('输入的身份证号长度不对,或者号码不符合规定!
    15位号码应全为数字,18位号码末位可以为数字或X。');  
          return false;  
       }  
        //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
        //下面分别分析出生日期和校验位  
        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){  
                alert('身份证号码日期格式不正确!');    
                return false;  
            }else{  
                //将15位身份证转成18位  
                //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
                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];  
                }  
                num += arrCh[nTemp % 11];    
                return num;    
            }    
        }  
        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){  
                alert('身份证号码日期格式不正确!');  
                return false;  
            }else{  
                //检验18位身份证的校验码是否正确。  
                //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
                var valnum;  
                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];  
                }  
                valnum = arrCh[nTemp % 11];  
                if (valnum != num.substr(17, 1)) {  
                    alert('18位身份证的校验码不正确!应该为:' + valnum);  
                    return false;  
                }  
            return num;  
            }  
        }  
        return true;  
    }

    1

  • 相关阅读:
    2019北航软工暑期班作业-IDE的安装与初步使用(Visual Studio版)
    java——线性表接口实现
    CCF——相邻数对201409-1
    CCF——门禁系统201412-1
    CCF——图像旋转201503-1
    CCF——数列分段201509-1
    CCF——数位之和201512-1
    CCF——折点计数201604-1
    Java String简单知识点总结
    無题
  • 原文地址:https://www.cnblogs.com/lixuwu/p/6206422.html
Copyright © 2011-2022 走看看