一個短信驗證碼倒計時插件

這個插件是大概是今年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

相關文章
相關標籤/搜索