最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實(shí)現(xiàn)發(fā)送短信驗(yàn)證后按鈕倒計(jì)時(shí)功能(防止刷新倒計(jì)時(shí)失效)

 更新時(shí)間:2017年07月07日 16:35:52   作者:非陽  
這篇文章主要介紹了JS實(shí)現(xiàn)發(fā)送短信驗(yàn)證后按鈕倒計(jì)時(shí)功能防止刷新倒計(jì)時(shí)失效問題,在項(xiàng)目開發(fā)中經(jīng)常會(huì)用到此功能,下面小編通過本文給大家分享JS實(shí)現(xiàn)發(fā)送短信驗(yàn)證后按鈕倒計(jì)時(shí)功能(防止刷新倒計(jì)時(shí)失效),需要的朋友參考下吧

應(yīng)用場(chǎng)景

在開發(fā)“發(fā)送短信驗(yàn)證”功能時(shí)候,要解決一個(gè)問題,防止惡意或頻繁發(fā)送短信驗(yàn)證碼問題。一般原理是“當(dāng)點(diǎn)擊發(fā)送按鈕時(shí),發(fā)送ajax請(qǐng)求到服務(wù)器發(fā)送短信驗(yàn)證碼,成功則把發(fā)送按鈕設(shè)置為不可點(diǎn)擊,并且調(diào)用定時(shí)器,按鈕顯示倒計(jì)時(shí)”。如果就這樣不對(duì)倒計(jì)時(shí)存儲(chǔ)做處理,那么當(dāng)刷新頁面,會(huì)出現(xiàn)倒計(jì)時(shí)失效,按鈕可點(diǎn)擊。提供以下解決方案:

  • 利用cookie存儲(chǔ)倒計(jì)時(shí)
  • 利用HTML5的localStorage 存儲(chǔ)倒計(jì)時(shí)

利用cookie存儲(chǔ)倒計(jì)時(shí)

發(fā)送成功后把剩余倒計(jì)時(shí)存儲(chǔ)到cookie,當(dāng)頁面刷新時(shí),檢查cookie 是否還存儲(chǔ)著剩余倒計(jì)時(shí)?,如果有,發(fā)送按鈕則保持倒計(jì)時(shí)狀態(tài),不可點(diǎn)擊,否則發(fā)送按鈕可點(diǎn)擊。

HTML代碼

<input type="button" id="btn" disabled="disabled" value="獲取驗(yàn)證碼">

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存在倒計(jì)時(shí)
     timekeeping();
   }else{//cookie 沒有倒計(jì)時(shí)
     $('#btn').attr("disabled", false);
   }
   function timekeeping(){
    //把按鈕設(shè)置為不可以點(diǎn)擊
    $('#btn').attr("disabled", true);
    var interval=setInterval(function(){//每秒讀取一次cookie
     //從cookie 中讀取剩余倒計(jì)時(shí)
     total=$.cookie("total");
     //在發(fā)送按鈕顯示剩余倒計(jì)時(shí)
     $('#btn').val('請(qǐng)等待'+total+'秒');
     //把剩余總倒計(jì)時(shí)減掉1
     total--;
     if(total==0){//剩余倒計(jì)時(shí)為零,則顯示 重新發(fā)送,可點(diǎn)擊
     //清除定時(shí)器
     clearInterval(interval);
     //刪除cookie
     total=$.cookie("total",total, { expires: -1 });
     //顯示重新發(fā)送
     $('#btn').val('重新發(fā)送');
     //把發(fā)送按鈕設(shè)置為可點(diǎn)擊
     $('#btn').attr("disabled", false);
     }else{//剩余倒計(jì)時(shí)不為零
     //重新寫入總倒計(jì)時(shí)
     $.cookie("total",total);
     }
    },1000);
   }
   //綁定發(fā)送按鈕
    $('#btn').click(function(event) {
   /* Act on the event */
   // alert($("#btn").val());
   //校驗(yàn)手機(jī)號(hào)碼
   var phone=$('#phone').val();
   var pre=/^[1][358][0-9]{9}$/;
   if(phone==''){
     layer.open({
       content: '手機(jī)號(hào)碼不能為空',
       time: 2
     });
     return this;
   }else{
     var pre=/^[1][358][0-9]{9}$/;
     if(!pre.test(phone)){
      layer.open({
        content: '手機(jī)號(hào)碼格式有誤!',
        time: 2
      });
       return this;
     }
   }
   $.ajax({
    url: '',//服務(wù)器發(fā)送短信
    type: 'GET',
    dataType: 'json',
    data: {phone: phone},
   })
   .done(function(re) {
      var str="發(fā)送短信驗(yàn)證碼成功,請(qǐng)注意查看您的手機(jī)";
      // console.log(re);
      if(re){
        $.cookie("total",60);
        timekeeping();
      }else{
        switch (re[0]) {
         case '160038':
          str="短信驗(yàn)證碼發(fā)送過頻繁";
          break; 
         case '160034':
          str="號(hào)碼黑名單";
          break; 
         case '160000':
          str="系統(tǒng)錯(cuò)誤";
          break;
         case '000000':
          str="發(fā)送成功";
          break;
         case '112300':
          str="接收短信的手機(jī)號(hào)碼為空";
          break; 
         case '160040':
          str="驗(yàn)證碼超出發(fā)送上限";
          break;
         case '160042':
          str="號(hào)碼格式有誤";
          break; 
         default:
          str="發(fā)送驗(yàn)證碼失敗";
          break;
        }
      }
      layer.open({
         content: str,
         time: 2
       });
   })
   .fail(function() {
    console.log("error");
   })
   .always(function() {
    console.log("complete");
   });
  });
  })
</script>

以上所述是小編給大家介紹的JS實(shí)現(xiàn)發(fā)送短信驗(yàn)證后按鈕倒計(jì)時(shí)功能(防止刷新倒計(jì)時(shí)失效),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論

革吉县| 依兰县| 探索| 尚义县| 新晃| 盐边县| 沅江市| 克东县| 离岛区| 德庆县| 古浪县| 民权县| 丹凤县| 平和县| 马山县| 鄂托克旗| 遵化市| 永新县| 库尔勒市| 南康市| 平江县| 开远市| 辽阳市| 永修县| 珠海市| 错那县| 武邑县| 宁河县| 永修县| 吉安市| 民县| 乌鲁木齐县| 英山县| 宜昌市| 扶沟县| 从化市| 上高县| 常熟市| 馆陶县| 洛川县| 宣武区|