使用js的方式設置點擊按鈕發送短信倒計時並且防止刷新

首先,放置一個按鈕

<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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章