1
//上传文件大小验证
$.fn.checkFileTypeAndSize = function (options) {
2 //默认设置
3 var defaults = {
4 allowedExtensions: [],
5 maxSize: 1024, //单位是KB,默认最大文件尺寸1MB=1024KB
6 success: function () { },
7 extensionerror: function () { },
8 sizeerror: function () { }
9 };
10 //合并设置
11 options = $.extend(defaults, options);
12 //遍历元素
13 return this.each(function () {
14 $(this).on('change', function () {
15 //获取文件路径
16 var filePath = $(this).val();
17 //小写字母的文件路径
18 var fileLowerPath = filePath.toLowerCase();
19 //获取文件的后缀名
20 var extension = fileLowerPath.substring(fileLowerPath.lastIndexOf('.') + 1);
21 //判断后缀名是否包含在预先设置的、所允许的后缀名数组中
22 if ($.inArray(extension, options.allowedExtensions) == -1) {
23 options.extensionerror();
24 $(this).focus();
25 } else {
26 try {
27 var size = 0;
28 size = $(this)[0].files[0].size;//byte
29 size = size / 1024;//kb
30 // size = size / 1024;//mb
31 if (size > options.maxSize) {
32 options.sizeerror();
33 } else {
34 options.success();
35 }
36 } catch (e) {
37 alert("错误:" + e);
38 }
39 }
40 });
41 });
42 };
43
44
45 // (查看/修改)图片格式和大小校验
46 $('#file').checkFileTypeAndSize({//获取<input type="file" id="file">
47 allowedExtensions: ['bmp','png','gif','jpeg','jpg'],
48 maxSize: 500,
49 success: function() {
50 previewFile();
51 },
52 extensionerror: function() {
53 $.messager.alert('警告','图片文件格式限于bmp,png,gif,jpeg,jpg');
54 return;
55 },
56 sizeerror: function() {
57 $.messager.alert('警告','最大尺寸500kb');
58 return;
59 }
60 });
61
62
63 $.extend($.fn.validatebox.defaults.rules, {
64
65 age: {// 验证年龄
66 validator: function (value) {
67 return /^(?:[1-9][0-9]?|1[01][0-9]|120)$/i.test(value);
68 },
69 message: '年龄必须是0到120之间的整数'
70 },
71 qq: {// 验证QQ,从10000开始
72 validator: function (value) {
73 return /^[1-9]\d{4,9}$/i.test(value);
74 },
75 message: 'QQ号码格式不正确'
76 },
77
78 email: {
79 validator: function (value) {
80 return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
81 },
82 message: '请输入有效的电子邮件账号(例:abc@126.com)'
83 },
84
85 integer: {// 验证整数
86 validator: function (value) {
87 return /^(?:[1-9][0-9]?|1[01][0-9]|100)$/i.test(value);
88 },
89 message: '请输入0-100的整数'
90 },
91
92 mobile: {// 验证手机号码
93 validator: function (value) {
94 return /^(13|15|18)\d{9}$/i.test(value);
95 },
96 message: '手机号码格式不正确'
97 },
98 bankcard: {// 银行卡验证
99 validator: function (value) {
100 var f = luhmCheck(value);
101 return f == true ? true : false;
102 },
103 message: '银行卡卡号格式不正确'
104 }
105 });
106
107 var aCity = {
108 11: "北京",
109 12: "天津",
110 13: "河北",
111 14: "山西",
112 15: "内蒙古",
113 21: "辽宁",
114 22: "吉林",
115 23: "黑龙江",
116 31: "上海",
117 32: "江苏",
118 33: "浙江",
119 34: "安徽",
120 35: "福建",
121 36: "江西",
122 37: "山东",
123 41: "河南",
124 42: "湖北",
125 43: "湖南",
126 44: "广东",
127 45: "广西",
128 46: "海南",
129 50: "重庆",
130 51: "四川",
131 52: "贵州",
132 53: "云南",
133 54: "西藏",
134 61: "陕西",
135 62: "甘肃",
136 63: "青海",
137 64: "宁夏",
138 65: "新疆",
139 71: "台湾",
140 81: "香港",
141 82: "澳门",
142 91: "国外"
143 }
144 function isCardID(sId) {
145 var iSum = 0;
146 var info = "";
147 if (!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误";
148 sId = sId.replace(/x$/i, "a");
149 if (aCity[parseInt(sId.substr(0, 2))] == null) return "你的身份证地区非法";
150 sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2));
151 var d = new Date(sBirthday.replace(/-/g, "/"));
152 if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate()))return "身份证上的出生日期非法";
153 for (var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
154 if (iSum % 11 != 1) return "你输入的身份证号非法";
155 return true;//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
156 }
157
158 //银行卡验证
159 function luhmCheck(bankno) {
160 var lastNum = bankno.substr(bankno.length - 1, 1);//取出最后一位(与luhm进行比较)
161 var first15Num = bankno.substr(0, bankno.length - 1);//前15或18位
162 var newArr = new Array();
163 for (var i = first15Num.length - 1; i > -1; i--) {//前15或18位倒序存进数组
164 newArr.push(first15Num.substr(i, 1));
165 }
166 var arrJiShu = new Array(); //奇数位*2的积 <9
167 var arrJiShu2 = new Array(); //奇数位*2的积 >9
168 var arrOuShu = new Array(); //偶数位数组
169 for (var j = 0; j < newArr.length; j++) {
170 if ((j + 1) % 2 == 1) {//奇数位
171 if (parseInt(newArr[j]) * 2 < 9)
172 arrJiShu.push(parseInt(newArr[j]) * 2);
173 else
174 arrJiShu2.push(parseInt(newArr[j]) * 2);
175 }
176 else //偶数位
177 arrOuShu.push(newArr[j]);
178 }
179 var jishu_child1 = new Array();//奇数位*2 >9 的分割之后的数组个位数
180 var jishu_child2 = new Array();//奇数位*2 >9 的分割之后的数组十位数
181 for (var h = 0; h < arrJiShu2.length; h++) {
182 jishu_child1.push(parseInt(arrJiShu2[h]) % 10);
183 jishu_child2.push(parseInt(arrJiShu2[h]) / 10);
184 }
185 var sumJiShu = 0; //奇数位*2 < 9 的数组之和
186 var sumOuShu = 0; //偶数位数组之和
187 var sumJiShuChild1 = 0; //奇数位*2 >9 的分割之后的数组个位数之和
188 var sumJiShuChild2 = 0; //奇数位*2 >9 的分割之后的数组十位数之和
189 var sumTotal = 0;
190 for (var m = 0; m < arrJiShu.length; m++) {
191 sumJiShu = sumJiShu + parseInt(arrJiShu[m]);
192 }
193 for (var n = 0; n < arrOuShu.length; n++) {
194 sumOuShu = sumOuShu + parseInt(arrOuShu[n]);
195 }
196 for (var p = 0; p < jishu_child1.length; p++) {
197 sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p]);
198 sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p]);
199 }
200 //计算总和
201 sumTotal = parseInt(sumJiShu) + parseInt(sumOuShu) + parseInt(sumJiShuChild1) + parseInt(sumJiShuChild2);
202 //计算Luhm值
203 var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10;
204 var luhm = 10 - k;
205 var my = false;
206 if (lastNum == luhm) {//Luhm验证通过
207 my = true;
208 }
209 else {//银行卡号必须符合Luhm校验
210 my = false;
211 }
212 return my;
213 }