這個插件是大概是今年9月份寫的了,當時項目很趕,沒怎麼優化,此次項目改版又要用到,在代碼庫裏看到後順便貼在博客上,刷刷存在感。這個插件很簡單,新手可參考以前的一篇文章:編寫jquery經常使用插件的基本格式 ,本插件沒提供css樣式,須要使用的朋友根據實際狀況改改就好,但願對大家有所幫助。javascript
;(function($){ $.fn.extend({ "Timing" : function(time,url,data){ var newopts = { time:time, url:url, //讀取不一樣的驗證接口,如:註冊,密碼找回,綁定手機等。。。。 data:data }; var defaults = { time:60 //默認倒計時60秒 }; //傳參取代默認時間 var option = $.extend({},defaults,newopts); var _this = $(this); _this.on("click",send); //ajax function send() { if( mobileBox.isValid() ){ // 此處判斷手機格式是否經過驗證,請根據實際狀況更改,可刪除 _this.html("正在發送"); option.data.mobile = mobileBox.val(); $.ajax({ type: "POST", url: option.url, dataType:"json", data:option.data, success: function(msg) { if (msg.code !== 200) { _this.html("發送驗證碼"); util.alertOnEl(msg.data.message, _this,{ autoClose:true }); return; } _this.unbind("click"); //很重要,點擊後取消點擊事件,防止屢次點擊驗證 var startTime = option.time; //一下是邏輯代碼,點擊後切換倒計時按鈕樣式 _this.html(startTime+"s從新發送").removeClass("send-validate").addClass("send-timing"); var timer = setInterval(function(){ _this.html(--startTime+"s從新發送"); if(startTime <= 0){ clearInterval(timer); _this.html("從新發送").on("click",send).removeClass().addClass("send-validate"); } },1000); }, error:function(XMLHttpRequest, textStatus, errorThrown){ console.log(XMLHttpRequest); } }); } } return this; //保持鏈式 } }); })(jQuery)
OK,就這樣。css