全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)

应用场景

在开发“发送短信验证”功能时候,要解决一个问题,防止恶意或频繁发送短信验证码问题。一般原理是“当点击发送按钮时,发送ajax请求到服务器发送短信验证码,成功则把发送按钮设置为不可点击,并且调用定时器,按钮显示倒计时”。如果就这样不对倒计时存储做处理,那么当刷新页面,会出现倒计时失效,按钮可点击。提供以下解决方案:

  • 利用cookie存储倒计时
  • 利用HTML5的localStorage 存储倒计时

利用cookie存储倒计时

发送成功后把剩余倒计时存储到cookie,当页面刷新时,检查cookie 是否还存储着剩余倒计时?,如果有,发送按钮则保持倒计时状态,不可点击,否则发送按钮可点击。

HTML代码

<input type="button" id="btn" disabled="disabled" value="获取验证码">

jQuery代码

<!--引入jquery.cookie.js 插件-->
<script src="http:jquery.cookie.js" type="text/javascript" charset="utf-8"></script>
<!--逻辑功能代码 -->
<script>
  $(function(){
   if($.cookie("total")!=undefined&&$.cookie("total")!='NaN'&&$.cookie("total")!='null'){//cookie存在倒计时
     timekeeping();
   }else{//cookie 没有倒计时
     $('#btn').attr("disabled", false);
   }
   function timekeeping(){
    //把按钮设置为不可以点击
    $('#btn').attr("disabled", true);
    var interval=setInterval(function(){//每秒读取一次cookie
     //从cookie 中读取剩余倒计时
     total=$.cookie("total");
     //在发送按钮显示剩余倒计时
     $('#btn').val('请等待'+total+'秒');
     //把剩余总倒计时减掉1
     total--;
     if(total==0){//剩余倒计时为零,则显示 重新发送,可点击
     //清除定时器
     clearInterval(interval);
     //删除cookie
     total=$.cookie("total",total, { expires: -1 });
     //显示重新发送
     $('#btn').val('重新发送');
     //把发送按钮设置为可点击
     $('#btn').attr("disabled", false);
     }else{//剩余倒计时不为零
     //重新写入总倒计时
     $.cookie("total",total);
     }
    },1000);
   }
   //绑定发送按钮
    $('#btn').click(function(event) {
   /* Act on the event */
   // alert($("#btn").val());
   //校验手机号码
   var phone=$('#phone').val();
   var pre=/^[1][358][0-9]{9}$/;
   if(phone==''){
     layer.open({
       content: '手机号码不能为空',
       time: 2
     });
     return this;
   }else{
     var pre=/^[1][358][0-9]{9}$/;
     if(!pre.test(phone)){
      layer.open({
        content: '手机号码格式有误!',
        time: 2
      });
       return this;
     }
   }
   $.ajax({
    url: '',//服务器发送短信
    type: 'GET',
    dataType: 'json',
    data: {phone: phone},
   })
   .done(function(re) {
      var str="发送短信验证码成功,请注意查看您的手机";
      // console.log(re);
      if(re){
        $.cookie("total",60);
        timekeeping();
      }else{
        switch (re[0]) {
         case '160038':
          str="短信验证码发送过频繁";
          break; 
         case '160034':
          str="号码黑名单";
          break; 
         case '160000':
          str="系统错误";
          break;
         case '000000':
          str="发送成功";
          break;
         case '112300':
          str="接收短信的手机号码为空";
          break; 
         case '160040':
          str="验证码超出发送上限";
          break;
         case '160042':
          str="号码格式有误";
          break; 
         default:
          str="发送验证码失败";
          break;
        }
      }
      layer.open({
         content: str,
         time: 2
       });
   })
   .fail(function() {
    console.log("error");
   })
   .always(function() {
    console.log("complete");
   });
  });
  })
</script>

以上所述是小编给大家介绍的JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# js发送短信验证码倒计时  # JS+HTML5实现获取手机验证码倒计时按钮  # JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】  # Angular.js实现获取验证码倒计时60秒按钮的简单方法  # 点击按钮出现60秒倒计时的简单js代码(推荐)  # js代码实现点击按钮出现60秒倒计时  # JS自动倒计时30秒后按钮才可用(两种场景)  # JS按钮倒计时并跳转到新地址的实现代码  # 倒计时  # 验证码  # 发送短信  # 设置为  # 小编  # 为零  # 为空  # 您的  # 在此  # 不可以  # 给大家  # 请注意  # 一个问题  # 所述  # 绑定  # 给我留言  # 感谢大家  # 则把  # 疑问请  # 有任何 


相关文章: 如何用搬瓦工VPS快速搭建个人网站?  建站之星导航配置指南:自助建站与SEO优化全解析  成都网站制作报价公司,成都工业用气开户费用?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何在景安服务器上快速搭建个人网站?  如何快速上传建站程序避免常见错误?  如何用虚拟主机快速搭建网站?详细步骤解析  建站之星导航如何优化提升用户体验?  教学论文网站制作软件有哪些,写论文用什么软件 ?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  建站之星备案流程有哪些注意事项?  如何用西部建站助手快速创建专业网站?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何快速生成专业多端适配建站电话?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何用美橙互联一键搭建多站合一网站?  如何正确选择百度移动适配建站域名?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  香港服务器租用每月最低只需15元?  建站之星展会模版如何一键下载生成?  如何高效生成建站之星成品网站源码?  如何解决VPS建站LNMP环境配置常见问题?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  高端网站建设与定制开发一站式解决方案 中企动力  网站制作难吗安全吗,做一个网站需要多久时间?  宁波免费建站如何选择可靠模板与平台?  营销式网站制作方案,销售哪个网站招聘效果最好?  小型网站制作HTML,*游戏网站怎么搭建?  长沙企业网站制作哪家好,长沙水业集团官方网站?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  建站之星如何修改网站生成路径?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  如何快速建站并高效导出源代码?  h5在线制作网站电脑版下载,h5网页制作软件?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  建站之星如何防范黑客攻击与数据泄露?  制作网站公司那家好,网络公司是做什么的?  网站制作价目表怎么做,珍爱网婚介费用多少?  建站之星代理商如何保障技术支持与售后服务?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何在万网自助建站平台快速创建网站?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  西安专业网站制作公司有哪些,陕西省建行官方网站?  建站主机如何选?性能与价格怎样平衡?  香港服务器部署网站为何提示未备案?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何用AWS免费套餐快速搭建高效网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。