val_user.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. /*
  2. * 会员/管理员表单验证
  3. * add by pjh 20180612
  4. */
  5. (function($){
  6. $.ajaxSetup({
  7. headers: {
  8. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  9. }
  10. });
  11. /*
  12. * 函数作用:判断字段是否为空
  13. * 输入参数:1,id 输入字段id值
  14. * 输出参数:1,true 字段不为空
  15. 2,false 字段为空,进行错误提示
  16. */
  17. function valIfNull(id) {
  18. var obj = $('#'+id);
  19. var obj_error = $('#error_'+id);
  20. var obj_label = $('#label_'+id);
  21. if (!obj.val()) {
  22. obj_error.text('请输入'+$.trim(obj_label.text()));
  23. return false;
  24. }
  25. else {
  26. obj_error.html(' ');
  27. return true;
  28. }
  29. }
  30. /*
  31. * 函数作用:判断字段长度是否符合要求
  32. * 输入参数:1,id 输入字段id值
  33. 2,min 输入字段要求最小长度
  34. 3,max 输入字段要求最大长度
  35. 4,noTrim 字段长度判断是否需要去空
  36. * 输出参数:1,true 字段长度符合要求
  37. 2,false 字段长度不符合要求,进行错误提示
  38. */
  39. function valLength(id, min=null, max=null, noTrim=null) {
  40. var obj = $('#'+id);
  41. var obj_error = $('#error_'+id);
  42. // 是否去空,主要为密码字段
  43. if (noTrim) {
  44. length = obj.val().length;
  45. }
  46. else {
  47. length = obj.val().trim().length;
  48. }
  49. if (min && min > length) {
  50. obj_error.text('长度需大于'+min+'个字符');
  51. return false;
  52. }
  53. else if (max && max < length) {
  54. obj_error.text('长度需小于'+max+'个字符');
  55. return false;
  56. }
  57. else {
  58. obj_error.html('&nbsp;');
  59. return true;
  60. }
  61. }
  62. /*
  63. * 函数作用:判断字段格式是否符合要求
  64. * 输入参数:1,id 输入字段id值
  65. 2,format 字段要求格式
  66. * 输出参数:1,true 字段格式符合要求
  67. 2,false 字段格式不符合要求,进行错误提示
  68. */
  69. function valFormat(id, format) {
  70. var obj = $('#'+id);
  71. var obj_error = $('#error_'+id);
  72. var obj_label = $('#label_'+id);
  73. if (!format.test(obj.val())) {
  74. obj_error.text('请输入正确的'+$.trim(obj_label.text()));
  75. return false;
  76. }
  77. else {
  78. obj_error.html('&nbsp;');
  79. return true;
  80. }
  81. }
  82. /*
  83. * 函数作用:判断两个字段值是否相等
  84. * 输入参数:1,id1 判断字段1的id值
  85. 2,id2 判断字段2的id值
  86. * 输出参数:1,true 两个字段值相等
  87. 2,false 两个字段值不相等,并对id2字段进行错误提示
  88. */
  89. function valEqual(id1, id2) {
  90. var obj_label = $('#label_'+id1);
  91. var obj_error = $('#error_'+id2);
  92. if ($('#'+id1).val() != $('#'+id2).val()) {
  93. obj_error.text('与'+$.trim(obj_label.text())+'不一致');
  94. return false;
  95. }
  96. else {
  97. obj_error.html('&nbsp;');
  98. return true;
  99. }
  100. }
  101. // 验证会员账号
  102. function validate_name(id_name) {
  103. if (!valIfNull(id_name)) return false;
  104. if (!valLength(id_name, '', 25)) return false;
  105. return true;
  106. }
  107. // 验证密码
  108. function validate_pwd(id_pwd) {
  109. if (!valIfNull(id_pwd)) return false;
  110. if (!valLength(id_pwd, 6, 16, true)) return false;
  111. return true;
  112. }
  113. // 图片验证码
  114. function validate_captcha(id_captcha) {
  115. if (!valIfNull(id_captcha)) return false;
  116. return true;
  117. }
  118. // 验证确认密码
  119. function validate_pwd2(id_pwd, id_pwd2) {
  120. if (!valIfNull(id_pwd2)) return false;
  121. if (!valEqual(id_pwd, id_pwd2)) return false;
  122. return true;
  123. }
  124. // 验证手机号码
  125. function validate_mobile(id_mobile) {
  126. if (!valIfNull(id_mobile)) return false;
  127. if (!valFormat(id_mobile, /^1[3-9][0-9]{9}$/)) return false;
  128. return true;
  129. }
  130. // 验证电子邮箱
  131. function validate_email(id_email) {
  132. if (!valIfNull(id_email)) return false;
  133. if (!valFormat(id_email, /^\w+_*@\w+.\w+$/)) return false;
  134. return true;
  135. }
  136. // 按钮60s倒计时效果
  137. function countDown(id_btn) {
  138. var seconds = 60;
  139. var obj_btn = $('#'+id_btn);
  140. setTime (obj_btn, seconds);
  141. function setTime (obj_btn) {
  142. if (0 == seconds) {
  143. obj_btn.removeAttr('disabled');
  144. obj_btn.html('获取验证码');
  145. seconds = 60;
  146. return true;
  147. }
  148. else {
  149. obj_btn.attr('disabled', true);
  150. obj_btn.html('重新获取('+seconds+'s)');
  151. seconds--;
  152. }
  153. setTimeout( function () {
  154. setTime(obj_btn)
  155. }, 1000)
  156. }
  157. }
  158. // 根据手机号码或会员账号发送短信
  159. function sendSmsByMobileOrName(id_btn, id_name=null, id_mobile=null, id_captcha, name_templete) {
  160. if (id_name) {
  161. if (!validate_name(id_name)) return false;
  162. var val_name = $('#'+id_name).val();
  163. var error_id = id_name;
  164. }
  165. if (id_mobile) {
  166. if (!validate_mobile(id_mobile)) return false;
  167. var val_mobile = $('#'+id_mobile).val();
  168. var error_id = id_mobile;
  169. }
  170. var url = "/ajax/sendSmsByMobileOrName";
  171. $.post( url, { name: val_name, mobile: val_mobile, templete: name_templete}, function(data) {
  172. if (data.error) {
  173. $('#error_'+error_id).text(data.error);
  174. return false;
  175. }
  176. else if ('success' == data.result) {
  177. countDown(id_btn);
  178. return true;
  179. }
  180. else {
  181. $('#error_'+id_captcha).text(data.result);
  182. return false;
  183. }
  184. });
  185. return true;
  186. }
  187. // 根据会员账号返回手机号码
  188. function getMobileFromName(id_name, id_mobile) {
  189. var url = "/ajax/getMobileFromName";
  190. var val_name = $('#'+id_name).val();
  191. $.ajax({
  192. url: url,
  193. type: "post",
  194. data: { name: val_name },
  195. success: function(mobile) {
  196. $('#'+id_mobile).val(mobile);
  197. },
  198. error: function (XMLHttpRequest) {
  199. if (404 == XMLHttpRequest.status) {
  200. $('#error_'+id_name).text('会员账号不存在');
  201. $('#'+id_mobile).val('');
  202. }
  203. }
  204. });
  205. return true;
  206. }
  207. var obj_btn_submit = $('#btn_submit');
  208. var obj_form_submit = $('#form_submit');
  209. var id_btn_sendSms = 'btn_sendSms';
  210. if ( '登录' == obj_btn_submit.val() ) {
  211. $('#name').blur( function() {
  212. if (!validate_name('name')) return false;
  213. });
  214. $('#password').blur( function() {
  215. if (!validate_pwd('password')) return false;
  216. });
  217. $('#captcha').blur( function() {
  218. if (!validate_captcha('captcha')) return false;
  219. });
  220. // 登录提交
  221. obj_btn_submit.click( function() {
  222. if (!validate_name('name')) return false;
  223. if (!validate_pwd('password')) return false;
  224. if (!validate_captcha('captcha')) return false;
  225. obj_form_submit.submit();
  226. });
  227. }
  228. else if ( '注册' == obj_btn_submit.val() ) {
  229. $('#name').blur( function() {
  230. if (!validate_name('name')) return false;
  231. });
  232. $('#password').blur( function() {
  233. if (!validate_pwd('password')) return false;
  234. });
  235. $('#password2').blur( function() {
  236. if (!validate_pwd2('password', 'password2')) return false;
  237. });
  238. $('#mobile').blur( function() {
  239. if (!validate_mobile('mobile')) return false;
  240. });
  241. $('#captcha').blur( function() {
  242. if (!validate_captcha('captcha')) return false;
  243. });
  244. // 发送短信
  245. $('#'+id_btn_sendSms).click( function() {
  246. if (!sendSmsByMobileOrName('btn_sendSms', '', 'mobile', 'captcha', 'register'))
  247. return false;
  248. });
  249. // 注册提交
  250. obj_btn_submit.click( function() {
  251. if (!validate_name('name')) return false;
  252. if (!validate_pwd('password')) return false;
  253. if (!validate_pwd2('password', 'password2')) return false;
  254. if (!validate_mobile('mobile')) return false;
  255. if (!validate_captcha('captcha')) return false;
  256. obj_form_submit.submit();
  257. });
  258. }
  259. else if ( '修改密码' == obj_btn_submit.val() ) {
  260. $('#old_password').blur( function() {
  261. if (!validate_pwd('old_password')) return false;
  262. });
  263. $('#password').blur( function() {
  264. if (!validate_pwd('password')) return false;
  265. });
  266. $('#password2').blur( function() {
  267. if (!validate_pwd2('password', 'password2')) return false;
  268. });
  269. // 修改密码提交
  270. obj_btn_submit.click( function() {
  271. if (!validate_pwd('old_password')) return false;
  272. if (!validate_pwd('password')) return false;
  273. if (!validate_pwd2('password', 'password2')) return false;
  274. obj_form_submit.submit();
  275. });
  276. }
  277. else if ( '修改手机' == obj_btn_submit.val() ) {
  278. $('#mobile').blur( function() {
  279. if (!validate_mobile('mobile')) return false;
  280. });
  281. // 发送短信
  282. $('#'+id_btn_sendSms).click( function() {
  283. if (!sendSmsByMobileOrName('btn_sendSms', '', 'mobile', 'captcha', 'mobile'))
  284. return false;
  285. });
  286. // 修改手机提交
  287. obj_btn_submit.click( function() {
  288. if (!validate_mobile('mobile')) return false;
  289. });
  290. }
  291. else if ( '修改邮箱' == obj_btn_submit.val() ) {
  292. $('#email').blur( function() {
  293. if (!validate_email('email')) return false;
  294. });
  295. // 修改邮箱提交
  296. obj_btn_submit.click( function() {
  297. if (!validate_email('email')) return false;
  298. obj_form_submit.submit();
  299. });
  300. }
  301. else if ( '重置密码' == obj_btn_submit.val() ) {
  302. $('#name').blur( function() {
  303. if (!validate_name('name')) return false;
  304. if (!getMobileFromName('name', 'mobile')); return false;
  305. });
  306. $('#password').blur( function() {
  307. if (!validate_pwd('password')) return false;
  308. });
  309. $('#password2').blur( function() {
  310. if (!validate_pwd2('password', 'password2')) return false;
  311. });
  312. $('#captcha').blur( function() {
  313. if (!validate_captcha('captcha')) return false;
  314. });
  315. // 发送短信
  316. $('#'+id_btn_sendSms).click( function() {
  317. if (!sendSmsByMobileOrName('btn_sendSms', 'name', '', 'captcha', 'password'))
  318. return false;
  319. });
  320. // 重置密码提交
  321. obj_btn_submit.click( function() {
  322. if (!validate_name('name')) return false;
  323. if (!getMobileFromName('name', 'mobile')) return false;
  324. if (!valIfNull('mobile')) return false;
  325. if (!validate_captcha('captcha')) return false;
  326. if (!validate_pwd('password')) return false;
  327. if (!validate_pwd2('password', 'password2')) return false;
  328. obj_form_submit.submit();
  329. });
  330. }
  331. })(jQuery);