www.gusucode.com > mcms手机网站系统 v3.1源码程序 > mcms_v3.1.0/upload/static/libs/verify.js

    /*
 * MCMS Copyright (c) 2012-2013 ZhangYiYeTai Inc.
 * 
 *  http://www.mcms.cc
 * 
 * The program developed by loyjers core architecture, individual all rights reserved, 
 * if you have any questions please contact loyjers@126.com
 */

var V= {
    "params":{
        /*"verify_uname":"用户名长度6-20个字符,以字母a-z(不区分大小写)开头,且只能由字母、数字0-9和下划线组成",*/
		"verify_uname":"用户名长度6-20个字符",
        "verify_upass":"密码长度为6-20个字符",
        "verify_email":"建议使用QQ、新浪、网易或搜狐邮箱"
    },
    /*
     * o,表单对象this,type 填写前提示=0,填写后提示=1,txt 提示文字
     */
    "form_tips":function(o,txt,type){
        if(!arguments[2]) type=0;
        if(txt=='') type=0;
        var form_tips_span='form_tips';//自动生成提示层类名
        var a=$(o).parent().find('.'+form_tips_span);
        if(a.length==0){
            $(o).after('<span class="'+form_tips_span+'">'+txt+'</span>');
            a=$(o).parent().find('.'+form_tips_span);
        }else{
            a.html(txt).css({'color':'red'});
        }
        a.css({'display':'inline-block','font-size':'12px','height':'32px','line-height':'30px','padding-right':'10px','border-right':'1px solid #ddd','text-indent':'30px','margin':'0 10px','background':'url(/static/sty_2dianshop/images/tips.png) 0 -176px no-repeat'});
        if(type==0){
            a.css({'color':'green'});
            if(txt=='') a.css({'background':'url(/static/sty_2dianshop/images/tips.png) 10px -263px no-repeat','border':'0px'}).html('&nbsp;');
        }else{
            a.css({'color':'red','background':'url(/static/sty_2dianshop/images/tips.png) 10px -298px no-repeat','border':'0px'});
        }
    },
    // 判断长度
    "verify_length":function(str,min,max){
        if(!arguments[1]) min=0;
        if(!arguments[2]) max=100;
        if(str.length<min) return "长度不能少于 "+min+" 个字符("+str.length+")";
        if(str.length>max) return "长度不能多于 "+max+" 个字符("+str.length+")";
        return '';
    },
    
    // 判断用户名
    "verify_uname":function(str) {
        str=str.toLocaleLowerCase();
        var no_prefix=['temp_','zazyz_','sqzyz_','admin'];
        for(var i=0;i<no_prefix.length;i++){
            if(str.substr(0,no_prefix[i].length)==no_prefix[i]) return '用户名不能以敏感字符 '+no_prefix.join(',')+' 开头';
        }
        var re=/^[a-z][a-z_0-9]{5,19}$/i;
        if(!re.test(str)) return V.params.verify_uname;
        return '';
    },
    
    // 判断密码
    "verify_upass":function(str) {
        if (str.length >= 6 && str.length <= 20) {
            return '';
        } else {
            return V.params.verify_upass;
        } 
    },
    
    // 判断电子邮箱
    "verify_email":function(str) {
        var re=/^[\w\-\.]+@[\w\-]+(\.\w+)+$/;
        if(!re.test(str)) return '电子邮箱格式不正确';
        return '';
    },
    
    // 判断URL
    "verify_url":function(str) {
        var re=/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_\~`@[\]\':+!]*([^<>\"])*$/i;
        if(re.test(str)){
            return '';
        }else{
            return '网址格式不正确,必须以 http:// 开头';
        }
    }, 
    // 判断手机号码
    "verify_mobile":function(str) {
        var re=/^((\(\d{3}\))|(\d{3}\-))?(13\d{9}|14\d{9}|15\d{9}|17\d{9}|18\d{9})$/i;
        if(re.test(str)){
            return '';
        }else{
            return '手机号码格式不正确';
        }
    }, 
    // 判断固定电话号码
    "verify_phone":function(str) {
        var re=/^(0\d{2,3}\-\d{7,8})|(\+\d{2,3}\-0\d{2,3}\-\d{7,8})$/i;
        if(re.test(str)){
            return '';
        }else{
            return '固定电话号码格式不正确';
        }
    },
    
    // 判断性别和身份证号码是否相符,1=男,0=女
    "verify_idcard_gender":function(idcard,gender){
        if (idcard.substr(16,1) % 2 == gender){
            return '';
        }else{
            return '填写的性别和身份证号码上不符';
        }
    },
    
    // 判断生日和身份证号码是否相符,生日格式:XXXX-XX-XX
    "verify_idcard_birthday":function(idcard, birtyday) {
        var sBirthday = idcard.sbustr(6,4) + '-' + idcard.sbustr(10,2) + '-' . idcard.sbustr(12,2);
        if (sBirthday == birtyday) {
            return '';
        }else{
            return '出生日期和身份证号码上不符';
        }
    },
    
    // 判断身份证号码,正确则返回18位后的身份证号码(兼容15位)
    "verify_idcard":function(idno,sex,bir) {
        if(!arguments[1]) sex='';
        if(!arguments[2]) bir='';
            var area = {
                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 : "国外"
        }
        var idno, Y, JYM, S, M, idno_array;
        idno_array = idno.split("");
        if (idno.length != 15 && idno.length != 18) {
                return '身份证号的长度不正确';
        }
        if (area[parseInt(idno.substr(0, 2))] == null) {
                return '身份证地区非法!';//
        }
        var idno_sex = (idno.length == 15) ? idno_array[14] : idno_array[16];
        idno_sex %= 2;

        
        if (sex!='' && idno_sex != sex) {
            return '和您选中的性别不相符';
        }
        
        switch (idno.length) {
        case 15:
                return '请输入18位的身份证号,格式化后的身份证号码:'+V.idto18(idno);
                
                var dateStr = "19" + idno.substr(6, 2) + "-"
                                + idno.substr(8, 2) + "-" + idno.substr(10, 2);
                if (bir!='' && dateStr != bir) {// 判断是否和输入的生日是否一致
                        return '身份证号的生日和您输入的生日不相符';
                }
                
                if ((parseInt(idno.substr(6, 2)) + 1900) % 4 == 0
                                || ((parseInt(idno.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idno
                                                .substr(6, 2)) + 1900) % 4 == 0)) {
                        ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;// 测试出生日期的合法性
                } else {
                        ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;// 测试出生日期的合法性
                }
                if (ereg.test(idno)) {
                        return '';// 正确
                } else {
                        return '出生日期超出范围或含有非法字符';
                }
                break;
        case 18:
                
                var dateStr = idno.substr(6, 4) + "-" + idno.substr(10, 2)
                                + "-" + idno.substr(12, 2);
                if (bir!='' && dateStr != bir) {// 判断是否和输入的生日是否一致
                        return '身份证号的生日和您输入的生日不相符';
                }
                
                if (parseInt(idno.substr(6, 4)) % 4 == 0
                                || (parseInt(idno.substr(6, 4)) % 100 == 0 && parseInt(idno
                                                .substr(6, 4)) % 4 == 0)) {
                        ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;// 闰年出生日期的合法性正则表达式
                } else {
                        ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;// 平年出生日期的合法性正则表达式
                }
                if (ereg.test(idno)) {
                        S = (parseInt(idno_array[0]) + parseInt(idno_array[10])) * 7
                                        + (parseInt(idno_array[1]) + parseInt(idno_array[11]))
                                        * 9
                                        + (parseInt(idno_array[2]) + parseInt(idno_array[12]))
                                        * 10
                                        + (parseInt(idno_array[3]) + parseInt(idno_array[13]))
                                        * 5
                                        + (parseInt(idno_array[4]) + parseInt(idno_array[14]))
                                        * 8
                                        + (parseInt(idno_array[5]) + parseInt(idno_array[15]))
                                        * 4
                                        + (parseInt(idno_array[6]) + parseInt(idno_array[16]))
                                        * 2 + parseInt(idno_array[7]) * 1
                                        + parseInt(idno_array[8]) * 6 + parseInt(idno_array[9])
                                        * 3;
                        Y = S % 11;
                        JYM = "10X98765432";
                        M = JYM.substr(Y, 1);
                        if (M == idno_array[17].toUpperCase()) {
                                return '';// 正确
                        } else {
                                return '不是正确的身份证号码';
                        }
                } else {
                        return '出生日期超出范围或含有非法字符';
                }
                break;
        default:
                return '身份证号码错误,请确认';
                break;
        }
    },
    
    idto18:function(id){
        if(id.length==18) return id;
        var lastNumber;
        //取得前面17位号码
        var zone=id.substring(0,6);
        var year="19" + id.substring(6,8);
        var mdo=id.substring(8,15);
        id = zone + year + mdo;

        //取得最后的检验码
        var getNum=eval(id.charAt(0)*7+id.charAt(1)*9+id.charAt(2)*10+id.charAt(3)*5+id.charAt(4)*8+id.charAt(5)*4+id.charAt(6)*2+id.charAt(7)*1+id.charAt(8)*6+id.charAt(9)*3+id.charAt(10)*7+id.charAt(11)*9+id.charAt(12)*10+id.charAt(13)*5+id.charAt(14)*8+id.charAt(15)*4+id.charAt(16)*2);
        getNum=getNum%11;
        switch (getNum) {
        case 0 :
          lastNumber="1";
          break;
        case 1 :
          lastNumber="0";
          break;
        case 2 :
          lastNumber="X";
          break;
        case 3 :
          lastNumber="9";
          break;
        case 4 :
          lastNumber="8";
          break;
        case 5 :
          lastNumber="7";
          break;
        case 6 :
          lastNumber="6";
          break;
        case 7 :
          lastNumber="5";
          break;
        case 8 :
          lastNumber="4";
          break;
        case 9 :
          lastNumber="3";
          break;
        case 10 :
          lastNumber="2";
          break;
        }

        //document.write(lastNumber);
        all = id + lastNumber;
        return all;
}
    
    
}