1. 程式人生 > 實用技巧 >vue獲取驗證碼倒計時

vue獲取驗證碼倒計時

此方法獲取驗證碼倒計時一分鐘,重新整理頁面不清0,主要利用本地儲存,延時器,遞迴實現

<el-button :disabled="!BtnStatus" @click="validateBtn">{{BtnStatus ? '獲取驗證碼' : `${countDownTime}秒後獲取`}}</el-button>

data() {
    return {
        BtnStatus: true,
        countDownTime: 60
  }
}

每次頁面重新載入即重新整理頁面的時候,都從本地儲存裡獲取存的時間戳,如果有的話,呼叫方法

 1
created() { 2 let myEndTime = localStorage.getItem('myEndTime') 3 myEndTime && this.codeCountDown(myEndTime) 11 },

點選獲取驗證碼的時候

1 // 點選的時候利用本地儲存存時間
2     validateBtn() {
3       let endMsRes = new Date().getTime() + 60000                   //當前時間戳加上一分鐘的時間戳,相當於當前時間一分鐘以後的時間戳
4       localStorage.setItem('
myEndTime', JSON.stringify(endMsRes)) // 把這個一分鐘時候的事件戳存起來6 this.codeCountDown(endMsRes) // 呼叫封裝的方法 7 }

秒和毫秒是 1 = 1000

 1     codeCountDown(endMsRes) {
 2       this.BtnStatus = false
 3       this.countDownTime = Math.ceil((endMsRes - new Date().getTime()) / 1000)    //
剩餘多少秒 4 let time = setTimeout(() => { 5 this.countDownTime-- 6 if (this.countDownTime < 1) { 7 this.BtnStatus = true 8 this.countDownTime = 60 9 localStorage.removeItem('myEndTime')11 clearTimeout(time) 12 } else { 13 this.codeCountDown(endMsRes) 14 } 15 }, 1000) 16 },