zoukankan      html  css  js  c++  java
  • js/jq实现获取手机验证码倒计时效果

    众所周知在前段的工作中注册信息或获取当前手机号信息等需求,我们基本上都要涉及到手机号验证码,在网络上搜索的案例杂乱无章,用的时候全是坑,真心不想用了,然后自己写了一个获取手机验证码的倒计时效果。有需求的伙伴们可以看看怎么实现的。

    yanzhengma (1)

    如何获取手机验证码?

    小月不知道大家是利用什么平台去获取验证码的,但是告诉大家我是在哪个平台获取的。

    LeanCloud :https://leancloud.cn/

    文档:https://leancloud.cn/docs/sms_guide-js.html

    在这个平台首先去要注册一个账号,在设置里面设置自己的信息按照文档去操作就可以了这里不多说了,大部分是后台去操作些接口的,我们前端有能力的可以自己去尝试用php去写接口。(懒惰的我是不会写。)

    一般是两个接口:

    1. 发送验证请求(这样你的手机会受到短信验证哦)
    2. 返回数据验证手机号和验证是否一致

    根据后台攻城狮的接口去实现吧。

    前端页面的工作

    下面这段代码就是上图所示的页面

    <div class="pop">
        <div class="con">
            <span class="close"><img src="img/close.png"></span>
            <div class="page1">
               <p class="info">
                   <span class="title">手机号:</span>
                   <input type="tel" class="tel" id="mobile" onkeyup="value=value.replace(/[^w./]/ig,&#39;&#39;)" required="" placeholder="请输入您的手机号">
               </p>
               <p class="info">
                  <span class="title">验证码:</span>
                  <input type="tel" class="code" placeholder="输入验证码">
                  <span class="code1">获取验证码</span>
               </p>
               <div class="demand demand2" style=" 70%; margin-top: 20px;">提交</div>
           </div>
           <div class="page2">
               <p class="p1">提交成功</p>
               <p class="p2">我们将在索要成功后</p>
               <p class="p2">第一时间通知您!</p>
               <div class="demand demand3" style=" 80%; margin-top: 20px; margin-bottom: 10px;">朕知道了</div>
           </div>
        </div>
    </div>

    校验手机号是否正确

    //校验手机号
    //页面的input写的正则下面直接调用方法就可以的
     jQuery.extend({
         checkmobileNo: function(str) {
             var re =/^1[3|7|5|8]d{9}$/;
             if (re.test(str)) {
                 return true;
             } else {
                 return false;
             }
         }
     });

    JS/JQ部分处理发送短信验证请求

    //发送验证码给手机
     $.ajax({
     type: 'GET',
     url:"你们后台提供的接口" + mobile, //即上面的接口1
     success: function(data, status) {
     if (data.errcode==0) {
     alert("已发送");
     $(".code1").attr("disabled", "disabled");
     $(".code1").css("background-color", "#b4b2b3");
    
    //下面就是实现倒计时的效果代码
     var d = new Date();
     d.setSeconds(d.getSeconds() + 59);
     var m = d.getMonth() + 1;
     var time = d.getFullYear() + '-' + m + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
    
     var id = ".code1";
     var end_time = new Date(Date.parse(time.replace(/-/g, "/"))).getTime(),
     //月份是实际月份-1
     sys_second = (end_time - new Date().getTime()) / 1000;
     var timer = setInterval(function() {
     if (sys_second > 1) {
     sys_second -= 1;
     var day = Math.floor((sys_second / 3600) / 24);
     var hour = Math.floor((sys_second / 3600) % 24);
     var minute = Math.floor((sys_second / 60) % 60);
     var second = Math.floor(sys_second % 60);
     var time_text = '';
     if (day > 0) {
     time_text += day + '天';
     }
     if (hour > 0) {
     if (hour < 10) {
     hour = '0' + hour;
     }
     time_text += hour + '小时';
     }
     if (minute > 0) {
     if (minute < 10) {
     minute = '0' + minute;
     }
     time_text += minute + '分';
     }
     if (second > 0) {
     if (second < 10) {
     second = '0' + second;
     }
     time_text += second + '秒';
     }
     $(id).text(time_text);
    
     } else {
     clearInterval(timer);
     $(".code1").attr("disabled", false);
     $(".code1").text('获取验证码');
     $(".code1").css("background-color", "#f67a62");
     }
     },
     1000); 
     
     }else{
     alert("发送失败,请再试一次。");
     }
     },
     error: function(data, status) {
     alert(status);
     }
     });
     
     });

    向服务器提交信息

    //验证验证码和手机发送的验证码是否一致
     $.ajax({
     type: 'GET',
     url: "接口2",
     success: function(data, status) {
     if (data.errcode==0) {
     //向服务器提交信息
     $.ajax({
     type: 'POST',
     url: "向服务器提交你们索要填写的信息接口",
     data: JSON.stringify({     //data这里看你们的需求根据接口的数据去写
     "project_id": pid,
     "phone": mobile,
     "device":d
     }),
     success: function(data, status) {
     if (data.errcode==0) {
     $('.page1').hide();
     $('.page2').show();
     }else{
     alert("提交失败,请在尝试一次!");
     }
     },
     error: function(data, status) {
     alert(data.errMsg);
     }
     });
     }else{
     alert("验证码不正确!");
     }
     },
     error: function(data, status) {
     alert(status);
     }
     });
     
     });

    终于写完了,大家有需求的自己尝试一下吧。有疑问的可以来问小月,想要案例源码的找小月来要把,DEMO 打开后请加QQ群在群文件可以自行下载哦!

  • 相关阅读:
    Eclipse常用插件推荐
    Open Source Search Engines in Java
    Java: convert a file to a byte array, then convert byte array to a file.
    常用的Eclipse插件介绍
    一个搜索引擎周边的blog
    java文件读取。(单字节读取和按行读取读取)
    im4java
    csv格式读取通用类
    java以流方式下载文件struts2.x版_心灵的港湾_百度空间
    Jetty/Feature/Jetty Maven Plugin
  • 原文地址:https://www.cnblogs.com/youyuekeji/p/5580344.html
Copyright © 2011-2022 走看看