jquery.validate.regorg.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. (function($) {
  2. 'use strict';
  3. // 自定义验证方法,验证是否被注册
  4. $.validator.addMethod('IsRegistered', function(value, element) {
  5. var result = false, eletype = element.name;
  6. if (eletype == 'org_mobile') {
  7. eletype = 'mobile';
  8. }
  9. $.ajax({
  10. url: org_check_url,
  11. cache: false,
  12. async: false,
  13. type: 'post',
  14. dataType: 'json',
  15. data: { type: eletype, param: value },
  16. success: function(json) {
  17. result = true;
  18. }
  19. });
  20. return result;
  21. }, '已被注册');
  22. // 自定义验证方法,验证区号不为空。
  23. $.validator.addMethod("lineMobileA", function(value, element, param) {
  24. var achoice = true;
  25. var telphoneValue = $.trim($('#org_mobile').val());
  26. var landlinefirstValue = $.trim($("#landline_tel_first").val());
  27. if(telphoneValue==''){
  28. if(landlinefirstValue==''){
  29. achoice = false;
  30. }
  31. }
  32. return achoice;
  33. }, '请填写区号');
  34. // 自定义验证方法,验证区号
  35. $.validator.addMethod("inputRegValiZone", function(value, element, param) {
  36. if (this.optional(element))
  37. return "dependency-mismatch";
  38. var reg = param;
  39. if (typeof param == 'string') {
  40. reg = new RegExp(param);
  41. }
  42. return reg.test(value);
  43. }, '区号格式不正确');
  44. // 自定义验证方法,固话手机二选一
  45. $.validator.addMethod("lineMobileAchoice", function(value, element, param) {
  46. // var regularMobile = /^(13[0-9]|14[5-9]|15[0-3,5-9]|16[6]|17[0-8]|18[0-9]|19[89])\d{8}$/;
  47. var achoice = true;
  48. var telphoneValue = $.trim($('#org_mobile').val());
  49. var landlinefirstValue = $.trim($("#landline_tel_first").val());
  50. var landlinenextValue = $.trim($("#landline_tel_next").val());
  51. if (telphoneValue == '' && (landlinenextValue == '')) {
  52. achoice = false;
  53. }
  54. if (telphoneValue != "" && !regularMobile.test(telphoneValue) && (landlinenextValue == '')) {
  55. achoice = false;
  56. }
  57. return achoice;
  58. }, '固定电话和手机号码请至少填写一项');
  59. // 手机号输入实时验证二选一
  60. $('input[name="org_mobile"]').on('keyup', function(event) {
  61. var telephoneValue = $(this).val();
  62. if (telephoneValue.length >= 11) {
  63. if (!$('#landline_tel_next').closest('.td1').next().find('.ok').length) {
  64. $('#landline_tel_next').closest('.td1').next().empty();
  65. }
  66. }
  67. });
  68. // 固定电话输入实时验证二选一
  69. $('input[name="landline_tel_next"]').on('keyup', function(event) {
  70. var telValue = $(this).val();
  71. if (telValue.length >= 6) {
  72. if (!$('#telephone').closest('.td1').next().find('.ok').length) {
  73. $('#telephone').closest('.td1').next().empty();
  74. }
  75. }
  76. });
  77. // 获取后台注册验证配置
  78. var config_varify_reg = eval($('#J_config_varify_reg').val());
  79. var verifyPhoto = false;
  80. // 注册企业处理程序
  81. function regorgHandler() {
  82. $('#btnRegister').val('注册中...').addClass('btn_disabled').prop('disabled', !0);
  83. $.ajax({
  84. url: org_register_url,
  85. type: 'POST',
  86. dataType: 'json',
  87. data: $('#registerForm').serialize(),
  88. success: function (data) {
  89. disapperTooltip("success","注册成功,正在为你跳转..");
  90. setTimeout(function () {
  91. window.location.href = data.data.url;
  92. },1000)
  93. },
  94. error:function(data){
  95. var error_obj=eval('(' + data.responseText + ')');
  96. if ($('input[name="agreement"]').is(':checked')) {
  97. $('#btnRegister').val('注册').removeClass('btn_disabled').prop('disabled', 0);
  98. }
  99. if (data.status==422) {//验证错误
  100. $.each(error_obj.errors,function (key,val) {
  101. disapperTooltip("remind", val[0]);
  102. });
  103. }
  104. else if(data.status==400) {//业务错误
  105. disapperTooltip("remind",error_obj.message);
  106. }
  107. }
  108. });
  109. }
  110. // 图片验证码
  111. // function verifyPhotoDialog() {
  112. // var verifyCodeDialog = $(this).dialog({
  113. // title: '请输入下图中的文字或字母',
  114. // content: [
  115. // '<div class="dia-captcha-item">',
  116. // '<img src="' + qscms.root + '?m=Home&c=captcha&a=captcha&t=' + (new Date()).getTime() + '" class="dia-captcha-img">',
  117. // '<input type="text" name="captcha-solution" class="dia-captcha-solution" maxlength="10">',
  118. // '</div>'
  119. // ].join(''),
  120. // btnOne: true,
  121. // loadFun: function() {
  122. // $('.dia-captcha-img').die().live('click', function() {
  123. // $(this).attr('src', qscms.root + '?m=Home&c=captcha&a=captcha&t=' + (new Date()).getTime());
  124. // })
  125. // },
  126. // yes: function() {
  127. // var currentPhotoVal = $.trim($('.dia-captcha-solution').val());
  128. // if (currentPhotoVal.length) {
  129. // $.ajax({
  130. // url: qscms.root + '?m=Home&c=captcha&a=captchaCode',
  131. // cache: false,
  132. // async: false,
  133. // type: 'post',
  134. // dataType: 'json',
  135. // data: { postcaptcha: currentPhotoVal },
  136. // success: function(result) {
  137. // if (result.status) {
  138. // verifyCodeDialog.hide();
  139. // regorgHandler();
  140. // } else {
  141. // disapperTooltip("remind", '验证码输入错误');
  142. // }
  143. // }
  144. // });
  145. // } else {
  146. // $('.dia-captcha-solution').focus();
  147. // disapperTooltip("remind", '请输入文字或字母');
  148. // }
  149. // }
  150. // })
  151. // verifyCodeDialog.setCloseDialog(false);
  152. // }
  153. // 企业注册验证程序
  154. $('#registerForm').validate({
  155. submitHandler: function(form) {
  156. if (!$('input[name="agreement"]').is(':checked')) {
  157. disapperTooltip("remind", '请同意注册协议');
  158. return false;
  159. }
  160. var landlinefirstValue = $.trim($("#landline_tel_first").val());
  161. var landlinenextValue = $.trim($("#landline_tel_next").val());
  162. var landlinelastValue = $.trim($("#landline_tel_last").val());
  163. var landline_tel_num ='';
  164. if (landlinefirstValue != '' && landlinenextValue != '') {
  165. landline_tel_num = landlinefirstValue +'-'+landlinenextValue;
  166. }
  167. if (landlinelastValue!='' && landline_tel_num!='') {
  168. landline_tel_num += '-' + landlinelastValue;
  169. }
  170. $('#landline_tel').val(landline_tel_num);
  171. $('#verifyRegorg').click();
  172. // if (config_varify_reg) {// 开启注册验证
  173. // if (verifyPhoto) {// 图形验证码
  174. // verifyPhotoDialog();
  175. // } else {// 极验
  176. // $('#verifyRegorg').click();
  177. // }
  178. // } else {// 未开启注册验证
  179. // regorgHandler();
  180. // }
  181. },
  182. rules: {
  183. orgname: {
  184. required: true,
  185. rangelength: [2, 50],
  186. IsRegistered: true
  187. },
  188. contact: {
  189. required: true,
  190. rangelength: [1, 10]
  191. },
  192. landline_tel_first: {
  193. inputRegValiZone: '^[0-9]{3}[0-9]?$',
  194. },
  195. landline_tel_next: {
  196. match: '^[0-9]{6,11}$',
  197. lineMobileAchoice: true,
  198. lineMobileA:true,
  199. },
  200. landline_tel_last: {
  201. number: true,
  202. rangelength: [1, 4],
  203. },
  204. org_mobile: {
  205. match: regularMobile,
  206. lineMobileAchoice: true,
  207. IsRegistered:true
  208. },
  209. username: {
  210. required: true,
  211. match: regularUsername,
  212. IsRegistered: true,
  213. //eIsRegistered:true
  214. },
  215. email: {
  216. required: true,
  217. email: true,
  218. IsRegistered: true,
  219. //eIsRegistered:true
  220. },
  221. org_password: {
  222. required: true,
  223. rangelength: [6, 16]
  224. },
  225. org_password_confirmation: {
  226. required: true,
  227. rangelength: [6, 16],
  228. equalTo: "#org_password"
  229. }
  230. },
  231. messages: {
  232. orgname: {
  233. required: '<div class="ftxt">请输入企业名称</div><div class="fimg"></div>',
  234. rangelength: '<div class="ftxt">2-50个字组成</div><div class="fimg"></div>',
  235. IsRegistered: '<div class="ftxt">该企业名称已被注册</div><div class="fimg"></div>',
  236. //eIsRegistered: '<div class="ftxt">该企业名称已被注册</div><div class="fimg"></div>'
  237. },
  238. contact: {
  239. required: '<div class="ftxt">请输入企业联系人</div><div class="fimg"></div>',
  240. rangelength: '<div class="ftxt">1-10个字组成</div><div class="fimg"></div>'
  241. },
  242. landline_tel_first: {
  243. inputRegValiZone: '<div class="ftxt">请填写正确的区号</div><div class="fimg"></div>',
  244. },
  245. landline_tel_next: {
  246. match: '<div class="ftxt">请输入6-11位的数字</div><div class="fimg"></div>',
  247. lineMobileAchoice: '<div class="ftxt">固定电话和手机号码至少填写一项</div><div class="fimg"></div>',
  248. lineMobileA:'<div class="ftxt">请填写区号</div><div class="fimg"></div>',
  249. },
  250. landline_tel_last: {
  251. number: '<div class="ftxt">分机号码为数字</div><div class="fimg"></div>',
  252. rangelength: '<div class="ftxt">1-4位数字组成</div><div class="fimg"></div>',
  253. },
  254. org_mobile: {
  255. match: '<div class="ftxt">手机号格式不正确</div><div class="fimg"></div>',
  256. lineMobileAchoice: '<div class="ftxt">固定电话和手机号码请至少填写一项</div><div class="fimg"></div>',
  257. IsRegistered : '<div class="ftxt">手机号已被注册</div><div class="fimg"></div>',
  258. //eIsRegistered: '<div class="ftxt">手机号已被注册</div><div class="fimg"></div>'
  259. },
  260. username: {
  261. required: '<div class="ftxt">请输入用户名</div><div class="fimg"></div>',
  262. match: '<div class="ftxt">字母开头,长度为6~16个数字或字母</div><div class="fimg"></div>',
  263. IsRegistered: '<div class="ftxt">用户名已被注册</div><div class="fimg"></div>',
  264. //eIsRegistered: '<div class="ftxt">用户名已被注册</div><div class="fimg"></div>'
  265. },
  266. email: {
  267. required: '<div class="ftxt">请输入邮箱</div><div class="fimg"></div>',
  268. email: '<div class="ftxt">邮箱格式不正确</div><div class="fimg"></div>',
  269. IsRegistered: '<div class="ftxt">该邮箱地址已被注册,请尝试登录</div><div class="fimg"></div>',
  270. //eIsRegistered: '<div class="ftxt">该邮箱地址已被注册,请尝试登录</div><div class="fimg"></div>'
  271. },
  272. org_password: {
  273. required: '<div class="ftxt">请输入密码</div><div class="fimg"></div>',
  274. rangelength: '<div class="ftxt">密码长度要求为6-16个字符</div><div class="fimg"></div>'
  275. },
  276. org_password_confirmation: {
  277. required: '<div class="ftxt">请输入确认密码</div><div class="fimg"></div>',
  278. rangelength: '<div class="ftxt">密码长度要求为6-16个字符</div><div class="fimg"></div>',
  279. equalTo: '<div class="ftxt">两次输入的密码不一致</div><div class="fimg"></div>'
  280. }
  281. },
  282. errorClasses: {
  283. orgname: {
  284. required: 'tip err',
  285. rangelength: 'tip err',
  286. IsRegistered: 'tip err'
  287. },
  288. contact: {
  289. required: 'tip err',
  290. rangelength: 'tip err'
  291. },
  292. landline_tel_first: {
  293. inputRegValiZone: 'tip err',
  294. },
  295. landline_tel_next: {
  296. match: 'tip err',
  297. lineMobileAchoice: 'tip err',
  298. lineMobileA: 'tip err'
  299. },
  300. landline_tel_last: {
  301. number: 'tip err',
  302. rangelength: 'tip err',
  303. },
  304. org_mobile: {
  305. match: 'tip err',
  306. lineMobileAchoice: 'tip err',
  307. IsRegistered: 'tip err',
  308. //eIsRegistered: 'tip err',
  309. //IsRegisteredT: 'tip err'
  310. },
  311. username: {
  312. required: 'tip err',
  313. match: 'tip err',
  314. IsRegistered: 'tip err',
  315. // eIsRegistered: 'tip err'
  316. },
  317. email: {
  318. required: 'tip err',
  319. email: 'tip err',
  320. IsRegistered: 'tip err',
  321. //eIsRegistered: 'tip err'
  322. },
  323. org_password: {
  324. required: 'tip err',
  325. rangelength: 'tip err'
  326. },
  327. org_password_confirmation: {
  328. required: 'tip err',
  329. rangelength: 'tip err',
  330. equalTo: 'tip err'
  331. }
  332. },
  333. tips: {
  334. orgname: '<div class="ftxt">名称与企业营业执照保持一致</div><div class="fimg"></div>',
  335. contact: '<div class="ftxt">请填写全名</div><div class="fimg"></div>',
  336. org_mobile: '<div class="ftxt">手机号可用于登录网站和找回密码</div><div class="fimg"></div>',
  337. username: '<div class="ftxt">字母开头,长度为6~16个数字或字母</div><div class="fimg"></div>',
  338. email: '<div class="ftxt">用邮箱用于接收简历及系统通知</div><div class="fimg"></div>',
  339. org_password: '<div class="ftxt">密码由6-16个数字、字母和符号组成</div><div class="fimg"></div>',
  340. org_password_confirmation: '<div class="ftxt">请再次输入密码</div><div class="fimg"></div>'
  341. },
  342. tipClasses: {
  343. orgname: 'tip',
  344. contact: 'tip',
  345. org_mobile: 'tip',
  346. username: 'tip',
  347. email: 'tip',
  348. org_password: 'tip',
  349. org_password_confirmation: 'tip'
  350. },
  351. groups: {
  352. phoneNum: 'landline_tel_first landline_tel_next landline_tel_last'
  353. },
  354. errorElement: 'div',
  355. errorPlacement: function(error, element) {
  356. if (element.attr('name') == 'landline_tel_last' || element.attr('name') == 'landline_tel_next' || element.attr('name') == 'landline_tel_first') {
  357. element.closest('.J_validate_group').find('.J_showtip_box').append(error);
  358. } else {
  359. element.closest('.J_validate_group').find('.J_showtip_box').append(error);
  360. }
  361. },
  362. success: function(label) {
  363. label.append('<div class="ok"></div>');
  364. }
  365. });
  366. // 如果后台开启注册验证就配置极验
  367. var handler = function(captchaObj) {
  368. captchaObj.bindForm("#registerForm");
  369. captchaObj.onSuccess(function() {
  370. regorgHandler();
  371. });
  372. captchaObj.onError(function() {
  373. });
  374. $('#verifyRegorg').on('click', function () {
  375. captchaObj.verify();
  376. });
  377. };
  378. gt_init(handler);
  379. })(jQuery);