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     });
View Code

再辅以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 }
View Code

.count属性最关键的就是第一行,让倒计时的div标签隐藏,当用户点击“获取验证码”后,“获取验证码”的div标签隐藏,“60s”的标签显示,并且每隔1s定时刷新,这样就实现了我们需要的60s倒计时了。

 

posted @ 2016-09-18 11:10  影卓后台开发人员  阅读(1332)  评论(0)    收藏  举报