zoukankan      html  css  js  c++  java
  • 短信接口发送验证码倒计时以及提交验证

    项目中找回密码的功能:

    忘记密码,登录页面点击忘记密码,跳转页面输入用户名,如果用户名已经绑定手机号,后台调用短信接口给该用户绑定的手机发送短信,如果没有绑定手机号则给出提示

    同时,发送验证码按钮出现倒计时并不可点击

    用户接收到验证码后,输入验证码并提交,如果验证码正确,跳转到修改密码页面,如果验证码不正确,跳转到错误页面。

    前端代码:

    表单部分:

    <form id="phoneform" class="layui-form" style="margin-top:10%;margin-left:30%;
    background-color:white;
        height: 180px;
        400px;
        padding: 50px;
        border-radius:15px;" method="post"  action="<%=basePath%>/personal/msg/findphonepnum">
      
      <div class="layui-form-item">
        <label class="layui-form-label">用户名:</label>
        <div class="layui-input-block">
          <input id="username" type="text" name="username" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
       
        </div>
        <div id="msg" style="margin-left: 40px"></div>
      </div>
       <div class="layui-form-item">
        <label class="layui-form-label">验证码:</label>
        <div class="layui-input-block">
          <input id="pnum" type="text" name="pnum" lay-verify="required" placeholder="请输入验证码" autocomplete="off" class="layui-input">
       
        </div>
      </div>
      <div class="layui-form-item">
        <div class="layui-input-block">
          
          <input type="button" class="layui-btn" id="find"  value="点击获取验证码" /> 
          <button class="layui-btn" lay-submit=""   lay-filter="demo2">提交</button>
        </div>
      </div>
    </form>

    js部分,ajax,倒计时:

    <script>
    layui.use(['form', 'layedit', 'laydate','layer'], function(){
      var form = layui.form
      ,layer = layui.layer
      ,layedit = layui.layedit
      ,laydate = layui.laydate;
      
      $("#find").click(function() {
          if($("#username").val()==''){
              layer.msg("请填写正确用户名");
              return false;
          }
          var obj=this;
          $.ajax({
              type:"post",
              url:"<%=basePath%>/personal/msg/findphone",
              data:{
                  username:$("#username").val(),
              },
              dataType:"json",//返回的
              success:function(data) {
                  
                  if(data.result){
                      $("#find").addClass(" layui-btn-disabled");
                      $('#find').attr('disabled',"true");
                      settime(obj);
                      $("#msg").text(data.msg);
                  }else{
                      layer.msg(data.msg);
                  }
              },
              error:function(msg) {
                  console.log(msg);
              }
          }); 
      });
    });
    </script>
    <script type="text/javascript"> 
    var countdown=120; 
    function settime(obj) { 
    if (countdown == 0) { 
        obj.removeAttribute("disabled"); 
        obj.classList.remove("layui-btn-disabled")
        obj.value="获取验证码"; 
        countdown = 60; 
        return;
    } else { 
        
        obj.value="重新发送(" + countdown + ")"; 
        countdown--; 
    } 
    setTimeout(function() { 
        settime(obj) }
        ,1000) 
    }
    </script>

    这里遇到了一个问题,关于按钮变色不可点击以及倒计时显示,因为本人也是刚开始做java没多久,js功底一般,所以这个倒计时代码时从网上找的,然后在和ajx结合时,获取当前对象出了点问题,因为如果放ajax前面,就算发送验证按失败也会显示倒计时,如果放在ajax里面,用无法获取到该按钮对象。我尝试过在ajax里面用 $('#find') 传到函数里,也是不行的。后来在ajax前先用  var obj=this;  ajax返回成功自后在调用倒计时函数就可以了。

    重点是发送代码后的按钮变化和提示以及倒计时。

    后端代码:

    主要是调用短信接口发送验证码以及用户提交验证码的验证。

    在我的另一篇博客里面:

    http://www.cnblogs.com/jiangwz/p/8093389.html

  • 相关阅读:
    初识python 2.x与3.x 区别
    装饰器
    函数的进阶
    Spring Boot启动问题:Cannot determine embedded database driver class for database type NONE
    22.Spring Cloud Config安全保护
    23.Spring Cloud Bus 无法更新问题(踩坑) Spring cloud config server Could not fetch remote for master remote
    24.Spring Cloud之Spring Cloud Config及Spring Cloud Bus
    Spring Boot整合Spring Data Elasticsearch 踩坑
    项目中Spring Security 整合Spring Session实现记住我功能
    32.再谈SpringBoot文件上传
  • 原文地址:https://www.cnblogs.com/jiangwz/p/8110330.html
Copyright © 2011-2022 走看看