天天看點

發送短信按鈕倒計時

1,定時器執行的函數

發送短信按鈕倒計時

var smsbtntiming = function () {  

                    if (secondcount === 0) {  

                        $self.addclass('enabled').removeclass('disabled');  

                        $self.val('重新發送');  

                        $self.removeattr('disabled');  

                        if (intervalhook) {  

                            clearinterval(intervalhook);  

                            intervalhook = null;  

                        }  

                    } else {  

                        $self.val('重新發送(' + secondcount + 's)');  

                        secondcount--;  

                    }  

                };  

2,發送請求,并且操作成功後才執行倒計時

發送短信按鈕倒計時

$.ajax({  

                    url: changebindserver + action,  

                    type: 'get',  

                    datatype: 'jsonp',  

                    data: {mobile: mobile},  

                    success: function (data) {  

                        if (data.result) {  

                            $spanhint.removeclass(codeerrormsg_class);  

                            $spanhint.show();  

                            $spanhint.text('發送成功');  

                            $self.addclass('disabled').removeclass('enabled');  

                            $self.val('重新發送(60s)');  

                            $self[0].disabled = 'disabled';//禁止按鈕的點選預設動作  

                            //$chanjetnewcodeinput[0].disabled = "disabled";  

                            intervalhook = setinterval(smsbtntiming, 1000);  

                            enablenextbtn($inputtf);  

                            $inputtf.removeattr('disabled');  

                            $inputtf.focus();  

                        } else {  

                            console.log(data);  

                            var date = new date();  

                            console.log(date);  

                            if (data.errormessage.indexof('綁定') != -1) {  

                                setoldmobilemsg($oldmobileerror, data.errormessage);  

                            } else {  

                                $spanhint.text(data.errormessage);//數量超出限制  

                                $spanhint.addclass(codeerrormsg_class);  

                                $spanhint.show();  

                            }  

                            //settimeout(restorespanhit, 4000);  

                        settimeout(restorespanhit, 5000);  

                });  

3,定時器方法中的this指什麼?

js代碼:

發送短信按鈕倒計時

var timing2= function () {  

            console.log(this);  

            console.log('timing');  

            clearinterval(a);  

        };  

        a=setinterval(timing2, 2000);  

 運作結果:

發送短信按鈕倒計時

代碼改為:

發送短信按鈕倒計時

var obj={  

            time2: function () {  

                var timing2= function () {  

                    console.log(this);  

                    console.log('timing');  

                    clearinterval(a);  

                a=setinterval(timing2, 2000);  

            }  

        obj.time2();  

結果也一樣

解決方法:

抽取出來一個方法:

發送短信按鈕倒計時

smsbtntimingcommon: function (me) {//定時器的方法  

        //me._data=me._data||{};  

        //console.log(me);  

        var $self = $('#getauthcodebtn');  

        if (me._data.bind.secondcount === 0) {  

            var intervalhooktmp = me._data.bind.intervalhook;  

            if (intervalhooktmp) {  

                console.log('me._data.intervalhook:' + intervalhooktmp);  

                clearinterval(intervalhooktmp);  

                console.log('stop timing');  

                me._data.bind.intervalhook = null;  

            $self.html('擷取驗證碼');  

            sendcodebtn.enable($self);  

        } else {  

            //console.log(me._data.secondcount);  

            $self.html('重新擷取(' + me._data.bind.secondcount + ')');  

            me._data.bind.secondcount = me._data.bind.secondcount - 1;  

        }  

    }  

 調用:

發送短信按鈕倒計時

var smsbtntiming= function () {  

            me.smsbtntimingcommon(me);  

繼續閱讀