jq_extend.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /**
  2. * desc: 对$进行扩展
  3. * author: wangyang
  4. * date: 2015-04-11
  5. */
  6. define(['config', 'native', 'zepto'], function (config, native, $) {
  7. (function ($) {
  8. $.extend($, {
  9. getScript: function (src, func) {
  10. var script = document.createElement('script');
  11. script.async = 'async';
  12. script.src = src;
  13. if (func) {
  14. script.onload = func;
  15. }
  16. document.getElementsByTagName('head')[0].appendChild(script);
  17. },
  18. //根据域名判断使用ajax还是jsonP
  19. autoAjax: function (param) {
  20. param['no_sign'] = 1;
  21. if (location.host == 'yiguanjia.club') {
  22. $.ajax(param);
  23. } else {
  24. // api接口增加版本号
  25. param.data['version'] = config.o2oVersion;
  26. var url = param.url;
  27. if (url.indexOf('?') == -1) {
  28. url += '?';
  29. }
  30. if (url.charAt(url.length - 1) != '?') {
  31. url += '&';
  32. }
  33. url += 'callback=?';
  34. if (!!param.data) {
  35. if (url.charAt(url.length - 1) != '?') {
  36. url += '';
  37. }
  38. url += '&' + $.param(param.data);
  39. }
  40. $.ajaxJSONP({
  41. url: url,
  42. success: (!!param.success) ? param.success : null,
  43. error: (!!param.error) ? param.error : null
  44. })
  45. }
  46. },
  47. //带验证的ajax
  48. signAjax: function (options) {
  49. if (config.isIOS || config.isAndroid) {
  50. var params = options.data;
  51. var sgf = options.success;
  52. options.success = function (res) {
  53. sgf(res);
  54. }
  55. if (!!!params.time) {
  56. params.time = new Date().getTime() / 1000;
  57. }
  58. sign_queue.push(options);
  59. if (sign_queue.length == 1) {
  60. native.getSign(sign_queue[0].data, sign_callback);
  61. }
  62. } else {
  63. this.autoAjax(options);
  64. }
  65. },
  66. //touch绑定事件的封装
  67. newTouch: function (el, callback, parent_dom) {
  68. var event = 'tap';
  69. if (!((window.DocumentTouch && document instanceof DocumentTouch) || 'ontouchstart' in window)) {
  70. event = 'tap';
  71. }
  72. if (parent_dom !== undefined) {
  73. $(parent_dom).on(event, el, function (ev) {
  74. callback.call(this, ev);
  75. });
  76. } else {
  77. $(el).on(event, function (ev) {
  78. callback.call(this, ev);
  79. });
  80. }
  81. },
  82. // 时间戳转化
  83. timetrans: function (d) {
  84. var date = new Date(d * 1000);//如果date为13位不需要乘1000
  85. var Y = date.getFullYear() + '-';
  86. var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  87. var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
  88. var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  89. var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  90. var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
  91. return Y + M + D + h + m + s;
  92. },
  93. // 验证码
  94. createCode: function createCode(Number) {
  95. var code = "";
  96. var codeLength = 4; //验证码的长度
  97. var i = 0
  98. // var checkCode = $("#checkCode").val();
  99. if (Number == 'Number') {
  100. var random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); //随机数
  101. } else {
  102. var random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
  103. 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); //随机数
  104. }
  105. for (; i < codeLength; i++) { //循环操作
  106. var charIndex = Math.floor(Math.random() * random.length); //取得随机数的索引
  107. code += random[charIndex]; //根据索引取得随机数加到code上
  108. }
  109. return code; //把code值赋给验证码
  110. },
  111. // 判断身份证是否合法
  112. checkID: function (ID) {
  113. if (typeof ID !== 'string') return '您输入的身份证包含其他文字';
  114. if (ID === '') return '身份证号不为空';
  115. var city = {
  116. 11: "北京",
  117. 12: "天津",
  118. 13: "河北",
  119. 14: "山西",
  120. 15: "内蒙古",
  121. 21: "辽宁",
  122. 22: "吉林",
  123. 23: "黑龙江 ",
  124. 31: "上海",
  125. 32: "江苏",
  126. 33: "浙江",
  127. 34: "安徽",
  128. 35: "福建",
  129. 36: "江西",
  130. 37: "山东",
  131. 41: "河南",
  132. 42: "湖北 ",
  133. 43: "湖南",
  134. 44: "广东",
  135. 45: "广西",
  136. 46: "海南",
  137. 50: "重庆",
  138. 51: "四川",
  139. 52: "贵州",
  140. 53: "云南",
  141. 54: "西藏 ",
  142. 61: "陕西",
  143. 62: "甘肃",
  144. 63: "青海",
  145. 64: "宁夏",
  146. 65: "新疆",
  147. 71: "台湾",
  148. 81: "香港",
  149. 82: "澳门",
  150. 91: "国外"
  151. };
  152. var birthday = ID.substr(6, 4) + '/' + Number(ID.substr(10, 2)) + '/' + Number(ID.substr(12, 2));
  153. var d = new Date(birthday);
  154. var newBirthday = d.getFullYear() + '/' + Number(d.getMonth() + 1) + '/' + Number(d.getDate());
  155. var currentTime = new Date().getTime();
  156. var time = d.getTime();
  157. var arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  158. var arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
  159. var sum = 0, i, residue;
  160. if (!/^\d{17}(\d|x)$/i.test(ID)) return '非法身份证';
  161. if (city[ID.substr(0, 2)] === undefined) return "非法地区";
  162. if (time >= currentTime || birthday !== newBirthday) return '非法生日';
  163. for (i = 0; i < 17; i++) {
  164. sum += ID.substr(i, 1) * arrInt[i];
  165. }
  166. residue = arrCh[sum % 11];
  167. if (residue !== ID.substr(17, 1)) return '非法身份证哦';
  168. // return city[ID.substr(0, 2)] + "," + birthday + "," + (ID.substr(16, 1) % 2 ? " 男" : "女") //浙江,1994/7/26, 男
  169. return true
  170. }
  171. })
  172. //由于加密是异步的,递归调用队列
  173. var sign_queue = [];
  174. function sign_callback(res) {
  175. var options = sign_queue.shift();
  176. options.data = res.data;
  177. $.autoAjax(options);
  178. if (sign_queue.length > 0) {
  179. native.getSign(sign_queue[0].data, sign_callback);
  180. }
  181. }
  182. })($);
  183. return $;
  184. })