• 短信接口发送验证码倒计时以及提交验证


    项目中找回密码的功能:

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

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

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

    前端代码:

    表单部分:

    <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

  • 相关阅读:
    ~虚拟现实论文~
    Vega Prime Distributed 模块的中文总结
    怎样在程序中使用vgPicker移动物体
    黑客档案
    在VBA中连接SQL SERVER数据库
    VC中调用Matlab引擎的设置
    在VB应用程序中单击按钮打开word文档
    matlab调用ansys的方法
    实现VC与Matcom的接口步骤
    vega编程中文资料
  • 原文地址:https://www.cnblogs.com/jiangwz/p/8110330.html
Copyright © 2020-2023  润新知