倒计时

不念不忘少年蓝@ 2022-06-02 10:12 495阅读 0赞

验证输入手机号 验证码倒计时

这里写图片描述这里写图片描述

#如上图所示 要实现验证码的倒计时的效果

  • 首先做页面的布局
  • 理清楚页面效果需要实现的逻辑思路
  • 对手机号及验证码和密码做正则的规则校验

前端样式布局代码

  1. <ul>
  2. <li class="phone bgImg">
  3. <input type="text" id="phone" maxlength="11" placeholder="手机号"/>
  4. </li>
  5. <li class="vCodeImg bgImg" id="sendVCode">
  6. <input type="text" id="smscode" maxlength="10" placeholder="验证码"/>
  7. <a class="get" href="#" id="sendCode">获取</a>
  8. <label class="noVcode" id="notSms" hidden><i>10s</i><a href="#">|收不到验证码</a></label>
  9. </li>
  10. <li class="password bgImg">
  11. <input type="text" id="password" maxlength="10" placeholder="6-10位数字&字母组合登录密码"/>
  12. <a href="#" class="invisible bgImg"></a>
  13. </li>
  14. </ul>
  15. 1
  16. 2
  17. 3
  18. 4
  19. 5
  20. 6
  21. 7
  22. 8
  23. 9
  24. 10
  25. 11
  26. 12
  27. 13
  28. 14

后端逻辑实现

首先先做下说明,因为自己公司的框架部分,对整个项目做了三层框架的架构划分,可同时支持IOS,Android,Web端.

首先去调取我要注册的api接口部分
  1. 1:调取register 注册接口
  2. doPost(proxy.apis.register, {}, {
  3. success:function (data) {
  4. $$('#Register').off();
  5. var btn = $$("#Register");
  6. }
  7. });
  8. 2:这个是调取的api接口部分
  9. register:'/auth/register', /*注册*/
  10. login:'/auth/login', /*登录*/
  11. send_code:"/auth/getValidCode" /*发送验证码*/
  12. 3:方法的定义放在最外面
  13. that.eventsHandler();
  14. that.registerSubmit();
  15. that.sendMessage();
  16. 1
  17. 2
  18. 3
  19. 4
  20. 5
  21. 6
  22. 7
  23. 8
  24. 9
  25. 10
  26. 11
  27. 12
  28. 13
  29. 14
  30. 15
  31. registerSubmit : function(){
  32. $('#Register').off('click').on('click',function(){
  33. // debugger;
  34. var phoneVal = $$.trim($$('#phone').val());
  35. var smsCodeVal = $$.trim($$('#smscode').val());
  36. var passwordVal = $$('#password').prop('value').trim();
  37. if (phoneVal == '') {
  38. popup('', '', '请输入手机号');
  39. return false;
  40. }
  41. var verifyphone = __reg__.phone;
  42. if(!verifyphone.test(phoneVal)){
  43. popup('','','手机号码格式错误');
  44. return false;
  45. }
  46. if (smsCodeVal == '') {
  47. popup('','','请发送短信验证码');
  48. return;
  49. }
  50. if (passwordVal == '') {
  51. popup('','','请输入密码');
  52. return;
  53. }
  54. $$("#Register").off('click');
  55. });
  56. },
  57. sendMessage : function () {
  58. var intervalInt;
  59. var sendCode = $$('#sendCode');
  60. var notSms = $$('#notSms');
  61. function sendFn() {
  62. sendCode.val(10).hide().off('click');
  63. notSms.show().off('click').on('click',notSms_click).css('color','#40cbff');
  64. intervalInt = setInterval(timeFn,1000);
  65. /*doPost(proxy.apis.send_code, {"phone":sendData.phone,"type":"borrowSms"}, { success:function (data) { if (data.status != '1') { popup('', '','发送短信出错'); } }, error:function(data){ popup('', '', data.msg); } });*/
  66. }
  67. function timeFn() {
  68. var secondVal = sendCode.val();
  69. sendCode.val(secondVal - 1);
  70. notSms.find('i').html(secondVal-1 + 's');
  71. if (sendCode.val() == 0 ) {
  72. // debugger
  73. notSms.hide();
  74. clearInterval(intervalInt);
  75. sendCode.show().on('click',sendFn);
  76. }
  77. }
  78. function notSms_click() {
  79. notSms.css('color','gray');
  80. dialog('获取语音验证码', '验证码将以电话形式通知到你,请注意接听喲~', 'OK', function () {
  81. $$('#notSms').off('click');
  82. doPost(proxy.apis.send_code, {
  83. "phone": phone, "type": "registerVoice"}, {
  84. success: function (data) {
  85. if (data.status != '1') {
  86. popup('', '', data.msg);
  87. }
  88. },
  89. error: errorFn
  90. });
  91. });
  92. }
  93. sendCode.off('click').on('click',sendFn);
  94. }
  95. 1
  96. 2
  97. 3
  98. 4
  99. 5
  100. 6
  101. 7
  102. 8
  103. 9
  104. 10
  105. 11
  106. 12
  107. 13
  108. 14
  109. 15
  110. 16
  111. 17
  112. 18
  113. 19
  114. 20
  115. 21
  116. 22
  117. 23
  118. 24
  119. 25
  120. 26
  121. 27
  122. 28
  123. 29
  124. 30
  125. 31
  126. 32
  127. 33
  128. 34
  129. 35
  130. 36
  131. 37
  132. 38
  133. 39
  134. 40
  135. 41
  136. 42
  137. 43
  138. 44
  139. 45
  140. 46
  141. 47
  142. 48
  143. 49
  144. 50
  145. 51
  146. 52
  147. 53
  148. 54
  149. 55
  150. 56
  151. 57
  152. 58
  153. 59
  154. 60
  155. 61
  156. 62
  157. 63
  158. 64
  159. 65
  160. 66
  161. 67
  162. 68
  163. 69
  164. 70
  165. 71
  166. 72
  167. 73
  168. 这里列出一个和本文无关的但是有用的正则校验:(name)姓名中带点的·名字的校验,如 买买提·古力娜扎·阿凡提
  169. var __reg__ = {
  170. 'name':/^[\u4E00-\u9FA5]+(·[\u4E00-\u9FA5]+)*$/,
  171. 'phone':/^1[34578]\d{
  172. 9}$/
  173. };
  174. 1
  175. 2
  176. 3
  177. 4
  178. 5

这里说一个timeFn() 方法,其实当我点开申请按钮的时候,你看到的是秒数在倒计时,其实这里做了2件事,第一是我给了一个数从60s开始,这个数值是写死的,endCode.val(10).hide().off('click');,然后通过sendCode去取当前的秒数值,再依次做减法运算,直到秒数减到为0.在显示 “申请”按钮 sendCode.show().on('click',sendFn);

  1. var secondVal = sendCode.val();
  2. sendCode.val(secondVal - 1);
  3. notSms.find('i').html(secondVal-1 + 's');
  4. 1
  5. 2
  6. 3

这样就实现了一个验证码倒计时的效果,这里提个醒:写每个方法的时候,要看清是在内部写还是在外部写,是不是在方法的作用范围内,不然click事件的触发效果是不会实现出来的.

今天的分享就到这里.更文将继续……..

好的事情每天用心做一点,然后等待时间的回报O(∩_∩)O~~

转自:http://blog.csdn.net/qq\_33072593/article/details/53653220

发表评论

表情:
评论列表 (有 0 条评论,495人围观)

还没有评论,来说两句吧...

相关阅读

    相关 计时

    验证输入手机号 验证码倒计时 ![这里写图片描述][SouthEast]![这里写图片描述][SouthEast 1] \如上图所示 要实现验证码的倒计时的效果