You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.js 18 KiB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  1. //从接口的com后面拼接到后面
  2. var base_api = "wxtest/";
  3. //base_api = "http://fx.zhizhuchuxing.cn/shop/?r=";
  4. //base_api = '';
  5. //版本号
  6. var version = 'version=2.0.4';
  7. //错误码
  8. //code SHOP-100001 未登录
  9. var codeNotLogin = 'SHOP-100001';
  10. //提示信息归整
  11. var infoApiError = "后台接口错误";
  12. //分销商的uid fx_uid
  13. var fx_uid = 'fx_uid';
  14. //授权页面
  15. var auth_login_url = base_api + 'weChat/we-chat/auth-login&redirect=';
  16. //延迟函数 需要将延迟处理的函数放在delay的回调中
  17. //$('#id').keyup(function() {
  18. // delay(function() {
  19. // console.log('test');
  20. // }, 1000);
  21. // });
  22. var delay = (function() {
  23. var timer = 0;
  24. return function(callback, time) {
  25. clearTimeout(timer);
  26. timer = setTimeout(callback, time);
  27. };
  28. })();
  29. //得到随机的字符串
  30. function getRdStr(len) {
  31. //2-36封顶
  32. var rdmString = "";
  33. for(; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
  34. return rdmString.substr(0, len);
  35. }
  36. function getFxUid() {
  37. var cookie_uid = getPar(fx_uid);
  38. //处理首页锚点#prod
  39. var index_end = cookie_uid.indexOf('#prod');
  40. if(index_end!=-1) cookie_uid = cookie_uid.substring(0,index_end);
  41. if(cookie_uid) {
  42. //存个180天
  43. setCookie(fx_uid, cookie_uid, 'd180');
  44. } else {
  45. cookie_uid = getCookie(fx_uid);
  46. if(!cookie_uid) setCookie(fx_uid,0,'d180');
  47. }
  48. return cookie_uid;
  49. }
  50. function ifLogin(callback, toURL) {
  51. getFxUid();
  52. $.ajax({
  53. type: "post",
  54. url: base_api + 'user/login/check-login',
  55. dataType: "json",
  56. async: false,
  57. success: function(res_data) {
  58. ZZLog(res_data);
  59. if(false == res_data['flag']) {
  60. if(codeNotLogin == res_data['code']) {
  61. if(toURL) {
  62. toURL = encodeURIComponent('/web/shop/' + toURL);
  63. location.href = res_data['url'] + toURL;
  64. } else {
  65. location.href = res_data['url'] + '/web/shop/reserve_prod.html ';
  66. }
  67. } else {
  68. alert(res_data['msg']);
  69. }
  70. } else {
  71. if(typeof(callback) == "function") {
  72. callback(true);
  73. }
  74. }
  75. },
  76. error: function() {
  77. alert(infoApiError);
  78. }
  79. });
  80. }
  81. function setCookie(name, value, time) {
  82. var strsec = getsec(time);
  83. var exp = new Date();
  84. exp.setTime(exp.getTime() + strsec * 1);
  85. document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();
  86. function getsec(str) {
  87. var str1 = str.substring(1, str.length) * 1;
  88. var str2 = str.substring(0, 1);
  89. if(str2 == "s") {
  90. return str1 * 1000;
  91. } else if(str2 == "h") {
  92. return str1 * 60 * 60 * 1000;
  93. } else if(str2 == "d") {
  94. return str1 * 24 * 60 * 60 * 1000;
  95. }
  96. }
  97. }
  98. function delCookie(name) {
  99. var exp = new Date();
  100. exp.setTime(exp.getTime() - 1);
  101. var cval = getCookie(name);
  102. if(cval != null)
  103. document.cookie = name + "=" + cval + ";path=/;expires=" + exp.toGMTString();
  104. }
  105. function getCookie(name) {
  106. var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
  107. if(arr = document.cookie.match(reg))
  108. return unescape(arr[2]);
  109. else
  110. return null;
  111. }
  112. //读取sessionStorage缓存
  113. function setSessionStorage(objName, objValue) {
  114. var sto = window.sessionStorage;
  115. if(sto)
  116. sto.setItem(objName, objValue);
  117. }
  118. //读取字符串类型的本地缓存
  119. function getSessionStorage(objName) {
  120. var ret = '';
  121. var sto = window.sessionStorage;
  122. if(sto)
  123. ret = sto.getItem(objName);
  124. return ret;
  125. }
  126. //清除本地缓存,如没指定名称则为清空所有缓存
  127. function clearSessionStorage(objName) {
  128. var sto = window.sessionStorage;
  129. if(sto) {
  130. if(objName)
  131. sto.removeItem(objName);
  132. else
  133. sto.clear();
  134. }
  135. }
  136. //设置Json类型的sessionStorage缓存
  137. function setJsonSessionStorage(objName, json) {
  138. if(json)
  139. setSessionStorage(objName, JSON.stringify(json));
  140. }
  141. //读取Json类型的sessionStorage缓存
  142. function getJsonSessionStorage(objName) {
  143. var ret = null;
  144. var str = getSessionStorage(objName);
  145. if(str)
  146. ret = JSON.parse(str);
  147. return ret;
  148. }
  149. //设置字符串类型的本地缓存
  150. function setStorage(objName, objValue) {
  151. var sto = window.localStorage;
  152. if(sto)
  153. sto.setItem(objName, objValue);
  154. }
  155. //读取字符串类型的本地缓存
  156. function getStorage(objName) {
  157. var ret = '';
  158. var sto = window.localStorage;
  159. if(sto)
  160. ret = sto.getItem(objName);
  161. return ret;
  162. }
  163. //清除本地缓存,如没指定名称则为清空所有缓存
  164. function clearStorage(objName) {
  165. var sto = window.localStorage;
  166. if(sto) {
  167. if(objName)
  168. sto.removeItem(objName);
  169. else
  170. sto.clear();
  171. }
  172. }
  173. //设置Json类型的本地缓存
  174. function setStorJson(objName, json) {
  175. if(json)
  176. setStorage(objName, JSON.stringify(json));
  177. }
  178. //读取Json类型的本地缓存
  179. function getStorJson(objName) {
  180. var ret = null;
  181. var str = getStorage(objName);
  182. if(str)
  183. ret = JSON.parse(str);
  184. return ret;
  185. }
  186. // 打印日志
  187. //function ZZLog(...type) {
  188. // var isLog = true; //是否打印
  189. // if(isLog) {
  190. // type.forEach(v => {
  191. // if(typeof(v) == 'object') {
  192. // console.log(v);
  193. // } else {
  194. // console.log('%c' + v, 'color:#666699');
  195. // }
  196. // })
  197. // }
  198. //}
  199. function ZZLog() {
  200. var isLog = true; //是否打印
  201. var isSign = false; //是否签名
  202. if(isLog) {
  203. if(isSign) {
  204. //如果要加前缀
  205. var args = Array.prototype.slice.call(arguments);
  206. args.unshift('[ZZCX:DeBug:Log]');
  207. console.log.apply(console, args);
  208. } else {
  209. console.log.apply(console, arguments);
  210. }
  211. }
  212. }
  213. //js判断一个日期是星期几 传入 年/月/日
  214. function getWeekDay(day) {
  215. var a = new Array("日", "一", "二", "三", "四", "五", "六");
  216. var week = new Date(day).getDay();
  217. var str = "星期" + a[week];
  218. return str;
  219. }
  220. //获取前一天日期 传入指定时间
  221. function before(d) {
  222. d = new Date(d);
  223. d = +d - 10006060 / 3 * 24;
  224. d = new Date(d);
  225. //格式化
  226. var year = ";" + d.getFullYear() + ";";
  227. var month = ";" + (d.getMonth() + 0 + 1) + ";";
  228. var day = ";" + d.getDate() + ";";
  229. if(year.length < 4) {
  230. year = "0" + year;
  231. }
  232. if(month.length < 4) {
  233. month = "0" + month;
  234. }
  235. if(day.length < 4) {
  236. day = "0" + day;
  237. }
  238. var datestr = year + "-" + month + "-" + day;
  239. datestr = datestr.replace(/;/g, "");
  240. return datestr;
  241. }
  242. // 获取指定日期的前后几天
  243. function getDateByDay(addDayCount, curDate) {
  244. var d = new Date(curDate);
  245. d.setDate(d.getDate() + addDayCount); //获取AddDayCount天后的日期
  246. //格式化
  247. var year = ";" + d.getFullYear() + ";";
  248. var month = ";" + (d.getMonth() + 0 + 1) + ";";
  249. var day = ";" + d.getDate() + ";";
  250. if(year.length < 4) {
  251. year = "0" + year;
  252. }
  253. if(month.length < 4) {
  254. month = "0" + month;
  255. }
  256. if(day.length < 4) {
  257. day = "0" + day;
  258. }
  259. var datestr = year + "-" + month + "-" + day;
  260. datestr = datestr.replace(/;/g, "");
  261. return datestr;
  262. }
  263. //获取后一天日期 传入指定时间
  264. function after(d) {
  265. d = new Date(d);
  266. d = +d + 10006060 / 3 * 24;
  267. d = new Date(d);
  268. //格式化
  269. var year = ";" + d.getFullYear() + ";";
  270. var month = ";" + (d.getMonth() + 0 + 1) + ";";
  271. var day = ";" + d.getDate() + ";";
  272. if(year.length < 4) {
  273. year = "0" + year;
  274. }
  275. if(month.length < 4) {
  276. month = "0" + month;
  277. }
  278. if(day.length < 4) {
  279. day = "0" + day;
  280. }
  281. var datestr = year + "-" + month + "-" + day;
  282. datestr = datestr.replace(/;/g, "");
  283. return datestr;
  284. }
  285. // 从URL上获得参数
  286. function getPar(par) {
  287. //获取当前URL
  288. var local_url = document.location.href;
  289. local_url = decodeURI(local_url);
  290. //获取要取得的get参数位置
  291. var get = local_url.indexOf(par + "=");
  292. if(get == -1) {
  293. return "";
  294. }
  295. //截取字符串
  296. var get_par = local_url.slice(par.length + get + 1);
  297. //判断截取后的字符串是否还有其他get参数
  298. var nextPar = get_par.indexOf("&");
  299. if(nextPar != -1) {
  300. get_par = get_par.slice(0, nextPar);
  301. }
  302. return get_par;
  303. }
  304. //得到时间组合
  305. function getDateTime(nTypeFlag) {
  306. var tNowTime = new Date();
  307. var myYear = ';' + tNowTime.getFullYear() + ';';
  308. var myMonth = ';' + (tNowTime.getMonth() + 1 - 0) + ';';
  309. var myDay = ';' + tNowTime.getDate() + ';';
  310. var myHour = ';' + tNowTime.getHours() + ';';
  311. var myMinu = ';' + tNowTime.getMinutes() + ';';
  312. var mySecond = ';' + tNowTime.getSeconds() + ';';
  313. if(myMonth.length < 4) myMonth = '0' + myMonth;
  314. if(myDay.length < 4) myDay = '0' + myDay;
  315. if(myHour.length < 4) myHour = '0' + myHour;
  316. if(myMinu.length < 4) myMinu = '0' + myMinu;
  317. if(mySecond.length < 4) mySecond = '0' + mySecond;
  318. var cNewTimeStr;
  319. //alert(tNowTime);
  320. switch(nTypeFlag + 1 - 1) {
  321. case 0:
  322. cNewTimeStr = myYear + '-' + myMonth + '-' + myDay;
  323. break;
  324. case 1:
  325. cNewTimeStr = myYear + myMonth + myDay;
  326. break;
  327. case 2:
  328. cNewTimeStr = myHour + ':' + myMinu + ':' + mySecond;
  329. break;
  330. case 3:
  331. cNewTimeStr = myHour + myMinu + mySecond;
  332. break;
  333. case 4:
  334. cNewTimeStr = myYear + myMonth + myDay + myHour + myMinu + mySecond;
  335. break;
  336. case 5:
  337. cNewTimeStr = myYear + '年' + myMonth + '月' + myDay + '日';
  338. break;
  339. case 6:
  340. cNewTimeStr = myYear;
  341. break;
  342. case 7:
  343. cNewTimeStr = myYear + '-' + myMonth;
  344. break;
  345. case 8: //得到上一个月的今天
  346. var date = getDateTime(0);
  347. var arr = date.split('-');
  348. var year = arr[0]; //获取当前日期的年份
  349. var month = arr[1]; //获取当前日期的月份
  350. var day = arr[2]; //获取当前日期的日
  351. var days = new Date(year, month, 0);
  352. days = days.getDate(); //获取当前日期中月的天数
  353. var year2 = year;
  354. var month2 = parseInt(month) - 1;
  355. if(month2 == 0) {
  356. year2 = parseInt(year2) - 1;
  357. month2 = 12;
  358. }
  359. var day2 = day;
  360. var days2 = new Date(year2, month2, 0);
  361. days2 = days2.getDate();
  362. if(day2 > days2) {
  363. day2 = days2;
  364. }
  365. if(month2 < 10) {
  366. month2 = '0' + month2;
  367. }
  368. cNewTimeStr = year2 + '-' + month2 + '-' + day2;
  369. break;
  370. case 9: //得到下一个月的今天
  371. var date = getDateTime(0);
  372. var arr = date.split('-');
  373. var year = arr[0]; //获取当前日期的年份
  374. var month = arr[1]; //获取当前日期的月份
  375. var day = arr[2]; //获取当前日期的日
  376. var days = new Date(year, month, 0);
  377. days = days.getDate(); //获取当前日期中的月的天数
  378. var year2 = year;
  379. var month2 = parseInt(month) + 1;
  380. if(month2 == 13) {
  381. year2 = parseInt(year2) + 1;
  382. month2 = 1;
  383. }
  384. var day2 = day;
  385. var days2 = new Date(year2, month2, 0);
  386. days2 = days2.getDate();
  387. if(day2 > days2) {
  388. day2 = days2;
  389. }
  390. if(month2 < 10) {
  391. month2 = '0' + month2;
  392. }
  393. var t2 = year2 + '-' + month2 + '-' + day2;
  394. return t2;
  395. break;
  396. case 10: //昨日日期
  397. //获取前一天日期
  398. return before(getDateTime(0));
  399. function before(d) {
  400. d = new Date(d);
  401. d = +d - 10006060 / 3 * 24;
  402. d = new Date(d);
  403. //return d;
  404. //格式化
  405. var year = ";" + d.getFullYear() + ";";
  406. var month = ";" + (d.getMonth() + 0 + 1) + ";";
  407. var day = ";" + d.getDate() + ";";
  408. if(year.length < 4) {
  409. year = "0" + year;
  410. }
  411. if(month.length < 4) {
  412. month = "0" + month;
  413. }
  414. if(day.length < 4) {
  415. day = "0" + day;
  416. }
  417. var datestr = year + "-" + month + "-" + day;
  418. datestr = datestr.replace(/;/g, "");
  419. return datestr;
  420. // return d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate();
  421. }
  422. break;
  423. case 11: //明日日期
  424. //获取后一天日期
  425. return after(getDateTime(0));
  426. function after(d) {
  427. d = new Date(d);
  428. d = +d + 10006060 / 3 * 24;
  429. d = new Date(d);
  430. //return d;
  431. //格式化
  432. var year = ";" + d.getFullYear() + ";";
  433. var month = ";" + (d.getMonth() + 0 + 1) + ";";
  434. var day = ";" + d.getDate() + ";";
  435. if(year.length < 4) {
  436. year = "0" + year;
  437. }
  438. if(month.length < 4) {
  439. month = "0" + month;
  440. }
  441. if(day.length < 4) {
  442. day = "0" + day;
  443. }
  444. var datestr = year + "-" + month + "-" + day;
  445. datestr = datestr.replace(/;/g, "");
  446. return datestr;
  447. // return d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate();
  448. }
  449. break;
  450. case 12: //本周起始日期
  451. return getWeekStartDate()
  452. function getWeekStartDate() {
  453. var now = new Date(); //当前日期
  454. var nowDayOfWeek = now.getDay(); //今天本周的第几天
  455. var nowDay = now.getDate(); //当前日
  456. var nowMonth = now.getMonth(); //当前月
  457. var nowYear = now.getYear(); //当前年
  458. nowYear += (nowYear < 2000) ? 1900 : 0; //
  459. var lastMonthDate = new Date(); //上月日期
  460. lastMonthDate.setDate(1);
  461. lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
  462. var lastYear = lastMonthDate.getYear();
  463. var lastMonth = lastMonthDate.getMonth();
  464. var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
  465. return formatDate(weekStartDate);
  466. }
  467. break;
  468. case 13: //本周结束日期
  469. return getWeekEndDate()
  470. function getWeekEndDate() {
  471. var now = new Date(); //当前日期
  472. var nowDayOfWeek = now.getDay(); //今天本周的第几天
  473. var nowDay = now.getDate(); //当前日
  474. var nowMonth = now.getMonth(); //当前月
  475. var nowYear = now.getYear(); //当前年
  476. nowYear += (nowYear < 2000) ? 1900 : 0; //
  477. var lastMonthDate = new Date(); //上月日期
  478. lastMonthDate.setDate(1);
  479. lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
  480. var lastYear = lastMonthDate.getYear();
  481. var lastMonth = lastMonthDate.getMonth();
  482. var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));
  483. return formatDate(weekEndDate);
  484. }
  485. break;
  486. case 14: //本月开始日期
  487. return getMonthStartDate()
  488. function getMonthStartDate() {
  489. var now = new Date(); //当前日期
  490. var nowDayOfWeek = now.getDay(); //今天本周的第几天
  491. var nowDay = now.getDate(); //当前日
  492. var nowMonth = now.getMonth(); //当前月
  493. var nowYear = now.getYear(); //当前年
  494. nowYear += (nowYear < 2000) ? 1900 : 0; //
  495. var lastMonthDate = new Date(); //上月日期
  496. lastMonthDate.setDate(1);
  497. lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
  498. var lastYear = lastMonthDate.getYear();
  499. var lastMonth = lastMonthDate.getMonth();
  500. var monthStartDate = new Date(nowYear, nowMonth, 1);
  501. return formatDate(monthStartDate);
  502. }
  503. break;
  504. case 15: //本月结束日期
  505. return getMonthEndDate();
  506. function getMonthEndDate() {
  507. var now = new Date(); //当前日期
  508. var nowDayOfWeek = now.getDay(); //今天本周的第几天
  509. var nowDay = now.getDate(); //当前日
  510. var nowMonth = now.getMonth(); //当前月
  511. var nowYear = now.getYear(); //当前年
  512. nowYear += (nowYear < 2000) ? 1900 : 0; //
  513. var lastMonthDate = new Date(); //上月日期
  514. lastMonthDate.setDate(1);
  515. lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
  516. var lastYear = lastMonthDate.getYear();
  517. var lastMonth = lastMonthDate.getMonth();
  518. //获得某月的天数
  519. function getMonthDays(myMonth) {
  520. var monthStartDate = new Date(nowYear, myMonth, 1);
  521. var monthEndDate = new Date(nowYear, myMonth + 1, 1);
  522. var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
  523. return days;
  524. }
  525. var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
  526. return formatDate(monthEndDate);
  527. }
  528. break;
  529. default:
  530. cNewTimeStr = myYear + '-' + myMonth + '-' + myDay + ' ' + myHour + ':' + myMinu + ':' + mySecond;
  531. break;
  532. }
  533. cNewTimeStr = cNewTimeStr.replace(/;/g, "");
  534. return cNewTimeStr;
  535. }
  536. //case 12,13的规整函数
  537. function formatDate(date) {
  538. var myyear = date.getFullYear();
  539. var mymonth = date.getMonth() + 1;
  540. var myweekday = date.getDate();
  541. if(mymonth < 10) {
  542. mymonth = "0" + mymonth;
  543. }
  544. if(myweekday < 10) {
  545. myweekday = "0" + myweekday;
  546. }
  547. return(myyear + "-" + mymonth + "-" + myweekday);
  548. }
  549. //得到url上的参数
  550. function getPar(par) {
  551. var local_url = document.location.href;
  552. local_url = decodeURI(local_url);
  553. var get = local_url.indexOf(par + "=");
  554. if(get == -1) {
  555. return "";
  556. }
  557. var get_par = local_url.slice(par.length + get + 1);
  558. var nextPar = get_par.indexOf("&");
  559. if(nextPar != -1) {
  560. get_par = get_par.slice(0, nextPar);
  561. }
  562. return get_par;
  563. }
  564. //截取日期参数
  565. function getMonthAndDayByDate(datestr, info) {
  566. var dateAry = datestr.split('-');
  567. var cNewTimeStr;
  568. switch(info) {
  569. case 'year':
  570. cNewTimeStr = dateAry[0];
  571. break;
  572. case 'month':
  573. cNewTimeStr = dateAry[1];
  574. break;
  575. default:
  576. cNewTimeStr = dateAry[2];
  577. break;
  578. }
  579. return cNewTimeStr;
  580. }
  581. //html存入json
  582. function setJsonHtml(data) {
  583. if(typeof(data) == "object") {
  584. var jsonArrayFinal = JSON.stringify(data);
  585. jsonArrayFinal = jsonArrayFinal.replace(/ /g, '');
  586. // jsonArrayFinal = jsonArrayFinal.replace(/"/g, '&quot;');
  587. return jsonArrayFinal;
  588. }
  589. }
  590. //取出html存入的json
  591. function getJsonHtml(data) {
  592. if(data) {
  593. var data_info = JSON.parse(data);
  594. return data_info;
  595. }
  596. }
  597. //比较全的身份证验证
  598. function isCardID(sId) {
  599. var aCity = {
  600. 11: "北京",
  601. 12: "天津",
  602. 13: "河北",
  603. 14: "山西",
  604. 15: "内蒙古",
  605. 21: "辽宁",
  606. 22: "吉林",
  607. 23: "黑龙江",
  608. 31: "上海",
  609. 32: "江苏",
  610. 33: "浙江",
  611. 34: "安徽",
  612. 35: "福建",
  613. 36: "江西",
  614. 37: "山东",
  615. 41: "河南",
  616. 42: "湖北",
  617. 43: "湖南",
  618. 44: "广东",
  619. 45: "广西",
  620. 46: "海南",
  621. 50: "重庆",
  622. 51: "四川",
  623. 52: "贵州",
  624. 53: "云南",
  625. 54: "西藏",
  626. 61: "陕西",
  627. 62: "甘肃",
  628. 63: "青海",
  629. 64: "宁夏",
  630. 65: "新疆",
  631. 71: "台湾",
  632. 81: "香港",
  633. 82: "澳门",
  634. 91: "国外"
  635. }
  636. var iSum = 0;
  637. var info = "";
  638. if(!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误";
  639. sId = sId.replace(/x$/i, "a");
  640. if(aCity[parseInt(sId.substr(0, 2))] == null) return "你的身份证地区非法";
  641. sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) +
  642. "-" + Number(sId.substr(12, 2));
  643. var d = new Date(sBirthday.replace(/-/g, "/"));
  644. if(sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) return "身份证上的出生日期非法";
  645. for(var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
  646. if(iSum % 11 != 1) return "你输入的身份证号非法";
  647. //aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女");//此次还可以判断出输入的身份证号的人性别
  648. return true;
  649. }