js--注册/登录时获取验证码之后限制时间倒计时

在前端开发过程中,登录/注册为常见的功能,现在一般以获取短信验证码来验证注册或登录时的手机号是否正确,为了防止用户频繁点击,就需要有倒计时的功能来限制用户点击事件,为此写下开发心得,如有错误还请大家指教!

HTML代码

<div class="item">
  <div class="name">+86</div>
  <div class="value">
    <input type="number" name="tel" id="tel" placeholder="请输入手机号" />
  </div>
</div>
<div class="item">
  <div class="value btn">
    <input type="number" name="code" id="code" placeholder="请输入验证码" />
  </div>
  <div class="name btn">获取验证码</div>
</div>

js代码

//获取验证码按钮点击事件
  $('.item .name.btn').click(function() {
    if($(this).hasClass('disable')) {//判断是否可以点击(正在倒计时不可点击)
      //正在倒计时不可点击
      return false;
    } else {
      //倒计时结束可以点击
      var tel = $('#tel').val();
      if(!tel) {
        myalert('请输入手机号');
      } else if(!telreg.test(tel)) {
        myalert('您输入的手机号有误');
      } else {
        //获取短信验证码
        $.ajax({
          url: IP + 'sms',
          type: 'POST',
          beforeSend: function(request) {
            request.setRequestHeader("API-Token", "0");
            request.setRequestHeader("API-Common", "{'ss':'ss'}");
          },
          data: {
            'username': tel
          },
          success: function(e) {
            console.log(e);
            if(e.isOk && e.status == '200') {
              //获取验证码成功,按钮不可点击,且进行倒计时
              $('.name.btn').addClass('disable');
              var timer = 30;//倒计时为30秒
                var time = setInterval(function() {
                  --timer;
                  $('.name.btn').html(timer + 's后重新获取');
                  $('.name.btn').addClass('noclick');
                  if(timer == 0) {
                    clearInterval(time);
                    $('.name.btn').html('获取验证码');
                    $('.name.btn').removeClass('noclick');
                    $('.name.btn').removeClass('disable');
                  }
                }, 1000);
              myalert('验证码发送成功');
            } else {
              myalert(e.message);
            }
          },
          error: function() {
            myalert('请求失败');
          }
        })
      }
    }
  });

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值