js 短信验证码60s倒计时
在与用户的交互中,很多时候需要验证用户的身份信息,其中手机号码验证是其中的一项:
用户输入手机号码,获取验证码,我们验证了手机号码与验证码后,才会让用户进行下一步操作。
html代码大致如下:
1 <form class="midautumn-input"> 2 <label for="mobile">输入手机号,马上领取</label> 3 <div class="midautumn-input-text"> 4 <input id="mobile" type="text" class="mobile" name="mobile" maxlength="11" placeholder="请输入手机号"/> 5 </div> 6 <div> 7 <input class="code varifycodeOf4" type="text" name="code" maxlength="4"placeholder="请输入验证码"/> 8 <a class="button" id="getSms">获取验证码</a> 9 <a class="count"><span id="time">60</span> 秒</a> 10 </div> 11 </form> 12 <div class="detail"> 13 <a class="detail-button">立即领取</a> 14 <div class="activity-toggle">活动规则 15 <br/> 16 <i class="icon icon-arrow"></i> 17 </div> 18 <div class="activity-toggle-content" style="display: none"> 19 <p>1. 本活动适用于所有微理财关注用户;</p> 20 <p>2. 活动期间,关注用户每日中午12点在微理财对话框输入“我爱看电影”,前100名参与用户即可获赠观影券码2份;</p> 21 <p>3. 每份观影券码可兑换2D/3D电影票一张,不限场次;券码有效期为2016年12月31日;</p> 22 <p>4. 活动期间每位用户仅有一次机会获赠观影券,同一微信号或同一手机号认为是同一用户;获赠影券由微理财渠道发放券码给获奖用户;</p> 23 <p>5. 每份观影券码仅能使用一次,一经使用,将无法进行退票和退款,请慎重购票;</p> 24 <p>6. 在法律许可的范围内,本活动最终解释权属于国泰君安证券所有;活动规则如有调整,以最新公告为准;</p> 25 </div> 26 </div>
一般情况下,在用户输入手机号码后一分钟内,系统不会再给用户发送,所以我们需要在页面上给用户展示一个60s倒计时的对话框,这个需要js来实现。
如下:
1 // 倒计时 2 var seconds = 60; 3 $("#getSms").on("tap",function(){ 4 if(!$(".mobile").valid()){ 5 return; 6 } 7 sendSms(); 8 $(this).hide(); 9 $(this).next('.count').css('display','inline-block'); 10 var fun = setInterval(function(){ 11 seconds -= 1; 12 $('#time').html(seconds); 13 if(seconds == 0){ 14 clearInterval(fun); 15 $('.count').hide(); 16 $('#getSms').css('display','inline-block'); 17 $('#time').html(60); 18 seconds = 60; 19 } 20 },1000); 21 });
再辅以css
1 .count{ 2 display: none; 3 margin-top: 10px; 4 height: 40px; 5 width: 35%; 6 margin-left: 5%; 7 line-height: 40px; 8 border: 1px solid #9F9DBD; 9 -webkit-border-radius: 5px; 10 -moz-border-radius: 5px; 11 border-radius: 5px; 12 font-size: 1.6rem; 13 }
.count属性最关键的就是第一行,让倒计时的div标签隐藏,当用户点击“获取验证码”后,“获取验证码”的div标签隐藏,“60s”的标签显示,并且每隔1s定时刷新,这样就实现了我们需要的60s倒计时了。

浙公网安备 33010602011771号