身份证校验

来源:互联网 发布:罗技m720蓝牙连接mac 编辑:程序博客网 时间:2024/04/30 18:32


var IdCardValid = {//身份证检查
        isIdCard : function(_id) {
                var returnObj = new Object();
                var id = $.trim(_id.toUpperCase());
                var idArray = this._splitId(id);
                
                if (idArray.length > 0) {
                        if (id.length != 18) {
                                returnObj.status = false;
                                returnObj.info = " 身份证号码必须是18位";


                                return returnObj;
                        }


                        var checksum = id.substring(17, 18);
                        var sum = 0;


                        for ( var i = 1; i <= idArray.length; i++) {
                                var Ai = idArray[i - 1];
                                var Wi = this._getWeightingFactor(i);


                                if (Wi != -1) {
                                        sum += Ai * Wi;
                                }
                        }


                        var mod = sum % 11;


                        if (this._getChecksum(mod) == checksum) {
                                returnObj.status = true;


                                return returnObj;
                        } else {
                                returnObj.status = false;
                                returnObj.info = " 身份证号码输入错误";


                                return returnObj;
                        }
                } else {
                        returnObj.status = false;
                        returnObj.info = " 身份证号码格式错误";


                        return returnObj;
                }
        },
        
        _splitId : function(_id) {
                var len = _id.length;
                var array = new Array();


                for ( var i = 0; i < len - 1; i++) {
                        array.push(_id.charAt(i));
                }


                return array;
        },
        
        _getWeightingFactor : function(_index) {
                switch (_index) {
                case 1:
                        return 7;
                case 2:
                        return 9;
                case 3:
                        return 10;
                case 4:
                        return 5;
                case 5:
                        return 8;
                case 6:
                        return 4;
                case 7:
                        return 2;
                case 8:
                        return 1;
                case 9:
                        return 6;
                case 10:
                        return 3;
                case 11:
                        return 7;
                case 12:
                        return 9;
                case 13:
                        return 10;
                case 14:
                        return 5;
                case 15:
                        return 8;
                case 16:
                        return 4;
                case 17:
                        return 2;
                default:
                        return -1;
                }
        },
        _getChecksum : function(_mod) {
                switch (_mod) {
                case 0:
                        return 1;
                case 1:
                        return 0;
                case 2:
                        return "X";
                case 3:
                        return 9;
                case 4:
                        return 8;
                case 5:
                        return 7;
                case 6:
                        return 6;
                case 7:
                        return 5;
                case 8:
                        return 4;
                case 9:
                        return 3;
                case 10:
                        return 2;
                default:
                        return -1;
                }
        }
};
0 0