国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JS實現發送短信驗證后按鈕倒計時功能(防止刷新倒計時失效)

2024-05-06 16:38:19
字體:
來源:轉載
供稿:網友

應用場景

在開發“發送短信驗證”功能時候,要解決一個問題,防止惡意或頻繁發送短信驗證碼問題。一般原理是“當點擊發送按鈕時,發送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實現發送短信驗證后按鈕倒計時功能(防止刷新倒計時失效),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 司法| 桃园市| 乡城县| 朝阳区| 平安县| 凤阳县| 东丽区| 隆安县| 保亭| 当涂县| 巴南区| 洛阳市| 德保县| 通海县| 佛山市| 栾城县| 格尔木市| 大英县| 武川县| 云霄县| 无极县| 南城县| 建水县| 屯昌县| 丰城市| 临城县| 房山区| 新巴尔虎左旗| 军事| 滨海县| 汉中市| 乌拉特前旗| 和静县| 葫芦岛市| 郓城县| 台南县| 达日县| 阜阳市| 东兴市| 怀远县| 厦门市|