Js實現(xiàn)手機發(fā)送驗證碼時按鈕延遲操作

字號:


    在做項目的時候,經(jīng)常遇到發(fā)短信驗證碼的問題,這時候需要用戶點完發(fā)送驗證碼按鈕后,一段時間內(nèi)不能重復點擊,畢竟驗證碼都是收費的嘛,誰都不想浪費,那么如何實現(xiàn)這種功能呢?下面來分享一下。
    實例代碼記錄:
    <script type="text/javascript">
      function start_sms_button(obj){
        var count = 1 ;
        var sum = 30;
        var i = setInterval(function(){
          if(count > 10){
            obj.attr('disabled',false);
            obj.val('發(fā)送驗證碼');
            clearInterval(i);
          }else{
            obj.val('剩余'+parseInt(sum - count)+'秒');
          }
          count++;
        },1000);
      }
      $(function(){
        //發(fā)送驗證碼
        $('#send_sms').click(function(){
          var phone_obj = $('input[name="phone"]');
          var send_obj = $('input#send_sms');
          var val = phone_obj.val();
          if(val){
            if(IsMobile(val)){
              send_obj.attr('disabled',"disabled");
              //30秒后重新啟動發(fā)送按鈕
              start_sms_button(send_obj);
              $.ajax({
                url:'{#url_reset("index/sms")#}',
                data:{'mobile':val},
                dataType:'json',
                type:'post',
                beforeSend:function(){
                  show_loading_body();
                },
                complete:function(){
                  show_loading_body();
                },
                success:function(data){
                  if(data.status!=undefined && (data.status == 'ok' || data.status == 'error')){
                    showMsg(data.msg);
                  }
                }
              });
            }else{
              showMsg("手機號的格式錯誤");
            }
          }else{
            showMsg('手機號不能為空');
          }
        });
      });
    </script>