js常用方法封装

  1 /*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */
  2 (function(){function N(p,r){function q(a){if(q[a]!==w)return q[a];var c;if("bug-string-char-index"==a)c="a"!="a"[0];else if("json"==a)c=q("json-stringify")&&q("json-parse");else{var e;if("json-stringify"==a){c=r.stringify;var b="function"==typeof c&&s;if(b){(e=function(){return 1}).toJSON=e;try{b="0"===c(0)&&"0"===c(new t)&&'""'==c(new A)&&c(u)===w&&c(w)===w&&c()===w&&"1"===c(e)&&"[1]"==c([e])&&"[null]"==c([w])&&"null"==c(null)&&"[null,null,null]"==c([w,u,null])&&'{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'==
  3 c({a:[e,!0,!1,null,"\x00\b\n\f\r\t"]})&&"1"===c(null,e)&&"[\n 1,\n 2\n]"==c([1,2],null,1)&&'"-271821-04-20T00:00:00.000Z"'==c(new C(-864E13))&&'"+275760-09-13T00:00:00.000Z"'==c(new C(864E13))&&'"-000001-01-01T00:00:00.000Z"'==c(new C(-621987552E5))&&'"1969-12-31T23:59:59.999Z"'==c(new C(-1))}catch(f){b=!1}}c=b}if("json-parse"==a){c=r.parse;if("function"==typeof c)try{if(0===c("0")&&!c(!1)){e=c('{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}');var n=5==e.a.length&&1===e.a[0];if(n){try{n=!c('"\t"')}catch(d){}if(n)try{n=
  4 1!==c("01")}catch(g){}if(n)try{n=1!==c("1.")}catch(m){}}}}catch(X){n=!1}c=n}}return q[a]=!!c}p||(p=k.Object());r||(r=k.Object());var t=p.Number||k.Number,A=p.String||k.String,H=p.Object||k.Object,C=p.Date||k.Date,G=p.SyntaxError||k.SyntaxError,K=p.TypeError||k.TypeError,L=p.Math||k.Math,I=p.JSON||k.JSON;"object"==typeof I&&I&&(r.stringify=I.stringify,r.parse=I.parse);var H=H.prototype,u=H.toString,v,B,w,s=new C(-0xc782b5b800cec);try{s=-109252==s.getUTCFullYear()&&0===s.getUTCMonth()&&1===s.getUTCDate()&&
  5 10==s.getUTCHours()&&37==s.getUTCMinutes()&&6==s.getUTCSeconds()&&708==s.getUTCMilliseconds()}catch(Q){}if(!q("json")){var D=q("bug-string-char-index");if(!s)var x=L.floor,M=[0,31,59,90,120,151,181,212,243,273,304,334],E=function(a,c){return M[c]+365*(a-1970)+x((a-1969+(c=+(1<c)))/4)-x((a-1901+c)/100)+x((a-1601+c)/400)};(v=H.hasOwnProperty)||(v=function(a){var c={},e;(c.__proto__=null,c.__proto__={toString:1},c).toString!=u?v=function(a){var c=this.__proto__;a=a in(this.__proto__=null,this);this.__proto__=
  6 c;return a}:(e=c.constructor,v=function(a){var c=(this.constructor||e).prototype;return a in this&&!(a in c&&this[a]===c[a])});c=null;return v.call(this,a)});B=function(a,c){var e=0,b,f,n;(b=function(){this.valueOf=0}).prototype.valueOf=0;f=new b;for(n in f)v.call(f,n)&&e++;b=f=null;e?B=2==e?function(a,c){var e={},b="[object Function]"==u.call(a),f;for(f in a)b&&"prototype"==f||v.call(e,f)||!(e[f]=1)||!v.call(a,f)||c(f)}:function(a,c){var e="[object Function]"==u.call(a),b,f;for(b in a)e&&"prototype"==
  7 b||!v.call(a,b)||(f="constructor"===b)||c(b);(f||v.call(a,b="constructor"))&&c(b)}:(f="valueOf toString toLocaleString propertyIsEnumerable isPrototypeOf hasOwnProperty constructor".split(" "),B=function(a,c){var e="[object Function]"==u.call(a),b,h=!e&&"function"!=typeof a.constructor&&F[typeof a.hasOwnProperty]&&a.hasOwnProperty||v;for(b in a)e&&"prototype"==b||!h.call(a,b)||c(b);for(e=f.length;b=f[--e];h.call(a,b)&&c(b));});return B(a,c)};if(!q("json-stringify")){var U={92:"\\\\",34:'\\"',8:"\\b",
  8 12:"\\f",10:"\\n",13:"\\r",9:"\\t"},y=function(a,c){return("000000"+(c||0)).slice(-a)},R=function(a){for(var c='"',b=0,h=a.length,f=!D||10<h,n=f&&(D?a.split(""):a);b<h;b++){var d=a.charCodeAt(b);switch(d){case 8:case 9:case 10:case 12:case 13:case 34:case 92:c+=U[d];break;default:if(32>d){c+="\\u00"+y(2,d.toString(16));break}c+=f?n[b]:a.charAt(b)}}return c+'"'},O=function(a,c,b,h,f,n,d){var g,m,k,l,p,r,s,t,q;try{g=c[a]}catch(z){}if("object"==typeof g&&g)if(m=u.call(g),"[object Date]"!=m||v.call(g,
  9 "toJSON"))"function"==typeof g.toJSON&&("[object Number]"!=m&&"[object String]"!=m&&"[object Array]"!=m||v.call(g,"toJSON"))&&(g=g.toJSON(a));else if(g>-1/0&&g<1/0){if(E){l=x(g/864E5);for(m=x(l/365.2425)+1970-1;E(m+1,0)<=l;m++);for(k=x((l-E(m,0))/30.42);E(m,k+1)<=l;k++);l=1+l-E(m,k);p=(g%864E5+864E5)%864E5;r=x(p/36E5)%24;s=x(p/6E4)%60;t=x(p/1E3)%60;p%=1E3}else m=g.getUTCFullYear(),k=g.getUTCMonth(),l=g.getUTCDate(),r=g.getUTCHours(),s=g.getUTCMinutes(),t=g.getUTCSeconds(),p=g.getUTCMilliseconds();
 10 g=(0>=m||1E4<=m?(0>m?"-":"+")+y(6,0>m?-m:m):y(4,m))+"-"+y(2,k+1)+"-"+y(2,l)+"T"+y(2,r)+":"+y(2,s)+":"+y(2,t)+"."+y(3,p)+"Z"}else g=null;b&&(g=b.call(c,a,g));if(null===g)return"null";m=u.call(g);if("[object Boolean]"==m)return""+g;if("[object Number]"==m)return g>-1/0&&g<1/0?""+g:"null";if("[object String]"==m)return R(""+g);if("object"==typeof g){for(a=d.length;a--;)if(d[a]===g)throw K();d.push(g);q=[];c=n;n+=f;if("[object Array]"==m){k=0;for(a=g.length;k<a;k++)m=O(k,g,b,h,f,n,d),q.push(m===w?"null":
 11 m);a=q.length?f?"[\n"+n+q.join(",\n"+n)+"\n"+c+"]":"["+q.join(",")+"]":"[]"}else B(h||g,function(a){var c=O(a,g,b,h,f,n,d);c!==w&&q.push(R(a)+":"+(f?" ":"")+c)}),a=q.length?f?"{\n"+n+q.join(",\n"+n)+"\n"+c+"}":"{"+q.join(",")+"}":"{}";d.pop();return a}};r.stringify=function(a,c,b){var h,f,n,d;if(F[typeof c]&&c)if("[object Function]"==(d=u.call(c)))f=c;else if("[object Array]"==d){n={};for(var g=0,k=c.length,l;g<k;l=c[g++],(d=u.call(l),"[object String]"==d||"[object Number]"==d)&&(n[l]=1));}if(b)if("[object Number]"==
 12 (d=u.call(b))){if(0<(b-=b%1))for(h="",10<b&&(b=10);h.length<b;h+=" ");}else"[object String]"==d&&(h=10>=b.length?b:b.slice(0,10));return O("",(l={},l[""]=a,l),f,n,h,"",[])}}if(!q("json-parse")){var V=A.fromCharCode,W={92:"\\",34:'"',47:"/",98:"\b",116:"\t",110:"\n",102:"\f",114:"\r"},b,J,l=function(){b=J=null;throw G();},z=function(){for(var a=J,c=a.length,e,h,f,k,d;b<c;)switch(d=a.charCodeAt(b),d){case 9:case 10:case 13:case 32:b++;break;case 123:case 125:case 91:case 93:case 58:case 44:return e=
 13 D?a.charAt(b):a[b],b++,e;case 34:e="@";for(b++;b<c;)if(d=a.charCodeAt(b),32>d)l();else if(92==d)switch(d=a.charCodeAt(++b),d){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:e+=W[d];b++;break;case 117:h=++b;for(f=b+4;b<f;b++)d=a.charCodeAt(b),48<=d&&57>=d||97<=d&&102>=d||65<=d&&70>=d||l();e+=V("0x"+a.slice(h,b));break;default:l()}else{if(34==d)break;d=a.charCodeAt(b);for(h=b;32<=d&&92!=d&&34!=d;)d=a.charCodeAt(++b);e+=a.slice(h,b)}if(34==a.charCodeAt(b))return b++,e;l();default:h=
 14 b;45==d&&(k=!0,d=a.charCodeAt(++b));if(48<=d&&57>=d){for(48==d&&(d=a.charCodeAt(b+1),48<=d&&57>=d)&&l();b<c&&(d=a.charCodeAt(b),48<=d&&57>=d);b++);if(46==a.charCodeAt(b)){for(f=++b;f<c&&(d=a.charCodeAt(f),48<=d&&57>=d);f++);f==b&&l();b=f}d=a.charCodeAt(b);if(101==d||69==d){d=a.charCodeAt(++b);43!=d&&45!=d||b++;for(f=b;f<c&&(d=a.charCodeAt(f),48<=d&&57>=d);f++);f==b&&l();b=f}return+a.slice(h,b)}k&&l();if("true"==a.slice(b,b+4))return b+=4,!0;if("false"==a.slice(b,b+5))return b+=5,!1;if("null"==a.slice(b,
 15 b+4))return b+=4,null;l()}return"$"},P=function(a){var c,b;"$"==a&&l();if("string"==typeof a){if("@"==(D?a.charAt(0):a[0]))return a.slice(1);if("["==a){for(c=[];;b||(b=!0)){a=z();if("]"==a)break;b&&(","==a?(a=z(),"]"==a&&l()):l());","==a&&l();c.push(P(a))}return c}if("{"==a){for(c={};;b||(b=!0)){a=z();if("}"==a)break;b&&(","==a?(a=z(),"}"==a&&l()):l());","!=a&&"string"==typeof a&&"@"==(D?a.charAt(0):a[0])&&":"==z()||l();c[a.slice(1)]=P(z())}return c}l()}return a},T=function(a,b,e){e=S(a,b,e);e===
 16 w?delete a[b]:a[b]=e},S=function(a,b,e){var h=a[b],f;if("object"==typeof h&&h)if("[object Array]"==u.call(h))for(f=h.length;f--;)T(h,f,e);else B(h,function(a){T(h,a,e)});return e.call(a,b,h)};r.parse=function(a,c){var e,h;b=0;J=""+a;e=P(z());"$"!=z()&&l();b=J=null;return c&&"[object Function]"==u.call(c)?S((h={},h[""]=e,h),"",c):e}}}r.runInContext=N;return r}var K=typeof define==="function"&&define.amd,F={"function":!0,object:!0},G=F[typeof exports]&&exports&&!exports.nodeType&&exports,k=F[typeof window]&&
 17 window||this,t=G&&F[typeof module]&&module&&!module.nodeType&&"object"==typeof global&&global;!t||t.global!==t&&t.window!==t&&t.self!==t||(k=t);if(G&&!K)N(k,G);else{var L=k.JSON,Q=k.JSON3,M=!1,A=N(k,k.JSON3={noConflict:function(){M||(M=!0,k.JSON=L,k.JSON3=Q,L=Q=null);return A}});k.JSON={parse:A.parse,stringify:A.stringify}}K&&define(function(){return A})}).call(this);
 18 jQuery.toJSON = JSON.stringify;JSON.encode = JSON.stringify;JSON.decode = JSON.parse;
 19 
 20 function getResultAjax(data) {
 21     var result = null;
 22     var resultObj = null;
 23     if(typeof(data) == 'string') resultObj = eval("(" + data + ")");
 24     else resultObj = eval("(" + $.toJSON(data) + ")");
 25     if (resultObj != null && resultObj.retCode == 1) result = resultObj.retObj;
 26     return result;
 27 }
 28 
 29 
 30 
 31 function getResult(data) {
 32     var result = null;
 33     var resultObj = null;
 34     if(typeof(data) == 'string') resultObj = eval("(" + data + ")");
 35     else resultObj = eval("(" + $.toJSON(data) + ")");
 36     if (resultObj != null && resultObj.resCode == 1) result = resultObj.result;
 37     return result;
 38 }
 39 
 40 
 41 function Map()  {
 42     this.elements = new Array();
 43     //获取MAP元素个数
 44     this.size = function () {
 45         return this.elements.length;
 46     };
 47 
 48     //判断MAP是否为空
 49     this.isEmpty = function () {
 50         return (this.elements.length < 1);
 51     };
 52     
 53     //删除MAP所有元素
 54     this.clear = function () {
 55         this.elements = new Array();
 56     };
 57     
 58     //向MAP中增加元素(key, value)
 59     this.put = function (_key, _value) {
 60         if (this.containsKey(_key)) {
 61             this.remove(_key);
 62         }
 63         this.elements.push({key:_key, value:_value});
 64     };
 65     //删除指定KEY的元素,成功返回True,失败返回False
 66     this.remove = function (_key) {
 67         var bln = false;
 68         try {
 69             for (i = 0; i < this.elements.length; i++) {
 70                 if (this.elements[i].key == _key) {
 71                     this.elements.splice(i, 1);
 72                     return true;
 73                 }
 74             }
 75         }
 76         catch (e) {
 77             bln = false;
 78         }
 79         return bln;
 80     };
 81  
 82     //获取指定KEY的元素值VALUE,失败返回NULL
 83     this.get = function (_key) {
 84         try {
 85             for (i = 0; i < this.elements.length; i++) {
 86                 if (this.elements[i].key == _key) {
 87                     return this.elements[i].value;
 88                 }
 89             }
 90         }
 91         catch (e) {
 92             return null;
 93         }
 94     };
 95     
 96     //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
 97     this.element = function (_index) {
 98         if (_index < 0 || _index >= this.elements.length) {
 99             return null;
100         }
101         return this.elements[_index];
102     };
103 
104     //判断MAP中是否含有指定KEY的元素
105     this.containsKey = function (_key) {
106         var bln = false;
107         try {
108             for (i = 0; i < this.elements.length; i++) {
109                 if (this.elements[i].key == _key) {
110                     bln = true;
111                 }
112             }
113         }
114         catch (e) {
115             bln = false;
116         }
117         return bln;
118     };
119 
120     //判断MAP中是否含有指定VALUE的元素
121     this.containsValue = function (_value) {
122         var bln = false;
123         try {
124             for (i = 0; i < this.elements.length; i++) {
125                 if (this.elements[i].value == _value) {
126                     bln = true;
127                 }
128             }
129         }
130         catch (e) {
131             bln = false;
132         }
133         return bln;
134     };
135 
136     //获取MAP中所有VALUE的数组(ARRAY)
137     this.values = function () {
138         var arr = new Array();
139         for (i = 0; i < this.elements.length; i++) {
140             arr.push(this.elements[i].value);
141         }
142         return arr;
143     };
144 
145     //获取MAP中所有KEY的数组(ARRAY)
146     this.keys = function () {
147         var arr = new Array();
148         for (i = 0; i < this.elements.length; i++) {
149             arr.push(this.elements[i].key);
150         }
151         return arr;
152     };
153 }
154 
155 /**
156  * 判断字符串是否为空
157  * @param o
158  * @returns {Boolean}
159  */
160 function isNull(o) {
161     return o == null || o == "" || o == "undefined";
162 }
163 
164 /**
165  * 校验用户输入是否为数字
166  * @param {Object} e
167  */
168 function isNumber(e) {
169     if (navigator.appName.indexOf("Microsoft") != -1) {
170         e = e == null ? window.event : e;
171         if (((e.keyCode > 47) && (e.keyCode < 58)) || (e.keyCode == 8)) {
172             return true;
173         } else {
174             e.cancelBubble = true;
175             e.returnvalue = false;
176             return false;
177         }
178     } else {
179         if (navigator.appName.indexOf("Netscape") != -1) {
180             if (((e.which > 47) && (e.which < 58)) || (e.which == 8) || (e.which == 0)) return true; 
181             else return false;
182         } else return true;
183     }
184 }
185 
186 /**
187 **获取URL的参数值
188 **@param strName 参数名称
189 **/
190 function getRequestURLParam(strName) {
191     var strVal = "";
192     var strHref = document.location.href;
193     var intPos = strHref.indexOf("?");
194     var strRight = strHref.substr(intPos + 1);
195     var arrTmp = strRight.split("&");
196     for (var i = 0; i < arrTmp.length; i++) {
197         var arrTemp = arrTmp[i].split("=");
198         if (arrTemp[0].toUpperCase() == strName.toUpperCase()) {
199             strVal = arrTemp[1];
200         }
201     }
202     return strVal;
203 }
204 
205 /**
206  * 校验是否为移动号码
207  * @param {Object} value
208  */
209 function chkCelNumber(value) {
210     //判断是否需要校验是否中国移动手机号码
211     var checkChinaMobile = value || false;
212     var mobile = checkChinaMobile ? /^1[3456789]\d{9}$/ : /^13[4-9]\d{8}$/;
213     return mobile.test(value);
214 }
215 
216 /**
217  * 验证邮箱
218  * @param email
219  * @returns
220  */
221 function checkEmail(email) {
222     var reg = /^([a-zA-Z0-9._-])+@([a-zA-Z0-9._-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
223     var flag = reg.test(email);
224     return flag;
225 }
226 
227 //非法字符校验
228 function checkChar(str) {
229     var wordsArray = new Array("%","%","*", "●", "▲", "■", "@", "@", "◎", 
230             "★", "※", "#", "〓", "\", "§", "☆", "○", "◇", "◆", "□", "△", "&", 
231             "^", " ̄", "_","♂","♀","Ю","┭","①","「","」","≮","§","£","∑","『","』",
232             "⊙","∷","Θ","の","↓","↑","Ф","~","Ⅱ","∈","┣"," ┫","╋","﹉", "#",
233             "@", "&", "*", "※", "§", "〃", "№", "〓", "○","●", "△", "▲", "◎", "☆", "★",
234             "◇", "◆", "■", "□", "▼", "▽","㊣", "℅", "ˉ", " ̄", "_", "﹍", "﹊", "﹎", "﹋", 
235             "﹌", "﹟", "﹠","﹡", "♀", "♂", "?", "⊙", "↑", "↓", "←", "→", "↖", "↗", "↙","↘", 
236             "┄", "︴", "﹏", "(", ")", "︵", "︶", "{", "}", "︷","︸", "〔", "〕", "︹", "︺", 
237             "【", "】", "︻", "︼", "《", "》", "︽","︾", "〈", "〉", "︿", "﹀", "「", "」", 
238             "﹁", "﹂", "『", "』", "﹃","﹄", "﹙", "﹚", "﹛", "﹜", "﹝", "﹞", 
239             "\"", "〝", "〞", "ˋ","ˊ", "≈", "≡", "≠", "=", "≤", "≥", "<", ">", "≮", "≯", "∷",
240             "±", "+", "×", "÷", "/", "∫", "∮", "∝", "∧", "∨", "∞","∑", "∏", "∪", "∩", "∈", 
241             "∵", "∴", "⊥", "∥", "∠", "⌒", "⊙","≌", "∽", "√", "≦", "≧", "≒", "≡", "﹢", "﹣", 
242             "﹤", "﹥", "﹦","~", "∟", "⊿", "∥", "㏒", "㏑", "∣", "|", "︱", "︳", "|", "/","\", "∕", 
243             "﹨", "¥", "€", "¥", "£", "®", "™", "©", "々","~", "‖", "ˇ", "ˉ", "&", "*", "#", "`", "~",
244             "=", "(", ")", "^","$", "@", "\\", "/", ">", "<", "[", "]", "{", "}");
245     var len = wordsArray.length;
246     for (var i = 0; i < len; i++) {
247         if (str.indexOf(wordsArray[i]) != -1) {
248             return wordsArray[i];
249         }
250     }
251     return "";
252 }
253 
254 /**
255  * 检测密码简易程度,并且为6位数字
256  * 重复的(如:111111,666666等)、连续的(如:123456、234567等
257  */
258 function checkPass(number) {
259     if (!/^\d{6}$/.test(number)) return false; // 不是6位数字
260     if (/^(\d)\1+$/.test(number)) return false;  // 全一样
261      
262     var numberStr = number.replace(/\d/g, function($0, pos) {
263         return parseInt($0)-pos;
264     });
265     if (/^(\d)\1+$/.test(numberStr)) return false;  // 顺增
266      
267     numberStr = number.replace(/\d/g, function($0, pos) {
268         return parseInt($0)+pos;
269     });
270     if (/^(\d)\1+$/.test(numberStr)) return false;  // 顺减
271     return true;
272 }
273 
274 /**
275  * 键盘回车事件
276  * @param e
277  * @param fn
278  */
279 function enterEvent(e, fn)
280 {
281     if ($.browser.msie)
282     {
283         if (event.keyCode == 13) eval(fn);
284     }
285     else
286     {
287         if (e.which == 13) eval(fn);
288     }
289 }
290 
291 /**
292  * 获取字符串长度 (一个中文字符长度为2)
293  * @param str
294  */
295 function getLength(str)
296 {
297     if (isNull(str)) return 0;
298     var strlen = 0; 
299     for(var i = 0; i < str.length; i ++)
300     {
301            if(str.charCodeAt(i) > 128)
302            {
303                strlen += 2;
304            }
305            else  strlen ++;
306     }
307     return strlen;
308 }
309 
310 /**
311  * 截取指定长度字符串 (包含中文字符)
312  * @param str
313  * @param len
314  */
315 function subStrCharacter(str, len)
316 {
317     var strlen = 0; 
318     var s = "";
319     if (isNull(str)) return s;
320     var tmpLen = getLength(str);
321     for(var i = 0;i < str.length;i++)
322     {
323         if(str.charCodeAt(i) > 128)
324         {
325             strlen += 2;
326         }
327         else
328         { 
329             strlen ++;
330         }
331         s += str.charAt(i);
332         if(strlen >= len && strlen < tmpLen)
333         { 
334            return s + "..." ;
335         }
336     }
337     return s;
338 }
339 
340 
341 /*图片延迟加载*/
342 function lazyload(option) 
343 {
344     var settings = {defObj:null, defHeight:0};
345     settings = $.extend(settings, option);
346     var defHeight = settings.defHeight;
347     var defObj = $(settings.defObj).find("img[lazy-src]");
348     var pageTop = function () {
349         return document.documentElement.clientHeight + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - settings.defHeight;
350     };
351     var imgLoad = function () {
352         defObj.each(function () {
353             if ($(this).offset().top <= pageTop()) {
354                 var xsrc = $(this).attr("lazy-src");
355                 if (xsrc) {
356                     $(this).attr("src", xsrc).removeAttr("lazy-src");
357                 }
358             }
359         });
360     };
361     imgLoad();
362     $(window).on("scroll", imgLoad);
363 }
364 
365 //验证身份证号方法 
366 function isIdCard(idcard)
367 { 
368     //var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!"); 
369     var area = {11:"北京",
370                 12:"天津",13:"河北",
371                 14:"山西",15:"内蒙古",
372                 21:"辽宁",22:"吉林",
373                 23:"黑龙江",31:"上海",
374                 32:"江苏",33:"浙江",
375                 34:"安徽",35:"福建",
376                 36:"江西",37:"山东",
377                 41:"河南",42:"湖北",
378                 43:"湖南",44:"广东",
379                 45:"广西",46:"海南",
380                 50:"重庆",51:"四川",
381                 52:"贵州",53:"云南",
382                 54:"西藏",61:"陕西",
383                 62:"甘肃",63:"青海",
384                 64:"宁夏",65:"新疆",
385                 71:"台湾",81:"香港",
386                 82:"澳门",91:"国外"};
387     
388     var idcard,Y,JYM; 
389     var S,M; 
390     var idcard_array = new Array(); 
391     idcard_array = idcard.split(""); 
392     if(area[parseInt(idcard.substr(0,2))]==null) return false; 
393     switch(idcard.length)
394     {
395         case 15: 
396             if ((parseInt(idcard.substr(6,2))+1900) % 4 == 0 
397                     || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 ))
398             { 
399                 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}$/;//测试出生日期的合法性 
400             } 
401             else
402             { 
403                 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}$/;//测试出生日期的合法性 
404             } 
405             if(ereg.test(idcard)) return true; 
406             else return false; 
407             break; 
408         case 18: 
409             if( parseInt(idcard.substr(6,4)) % 4 == 0 
410                     || ( parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 ))
411             { 
412                 ereg = /^[1-9][0-9]{5}19[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]$/;//闰年出生日期的合法性正则表达式 
413             } 
414             else
415             { 
416                 ereg = /^[1-9][0-9]{5}19[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]$/;//平年出生日期的合法性正则表达式 
417             } 
418             if(ereg.test(idcard))
419             { 
420                 S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 ; 
421                 Y = S % 11; 
422                 M = "F"; 
423                 JYM = "10X98765432"; 
424                 M = JYM.substr(Y,1); 
425                 if(M == idcard_array[17]) return true; 
426                 else return false; 
427             } 
428             else return false; 
429             break; 
430         default: 
431             return false; 
432             break; 
433     } 
434 }
435 
436 
437 
438 /**
439  * 判断是否为手机端
440  * @returns {Boolean}
441  */
442 function isMobileClient()
443 {
444     var userAgentInfo = navigator.userAgent;
445     var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
446     var flag = false;
447     for (var v = 0; v < agents.length; v ++) {
448         if (userAgentInfo.indexOf(agents[v]) > 0) {
449             flag = true;
450             break;
451         }
452     }
453     return flag;
454 }
455 
456 /**
457  * 是否是安卓客户端
458  * @returns {Boolean}
459  */
460 function isAndroidClientApp() 
461 {
462     var userAgentInfo = navigator.userAgent;
463     if (userAgentInfo.indexOf('xwapp_andriod') > 0) return true;
464     else return false;
465 }
466 
467 /**
468  * 是否是IOS客户端
469  * @returns {Boolean}
470  */
471 function isIOSClientApp() 
472 {
473     var userAgentInfo = navigator.userAgent;
474     if (userAgentInfo.indexOf('xwapp_ios') > 0) return true;
475     else return false;
476 }

 

posted @ 2017-10-10 16:04  sunny1009  阅读(519)  评论(0)    收藏  举报