vue獲取驗證碼倒計時
阿新 • • 發佈:2020-10-26
此方法獲取驗證碼倒計時一分鐘,重新整理頁面不清0,主要利用本地儲存,延時器,遞迴實現
<el-button :disabled="!BtnStatus" @click="validateBtn">{{BtnStatus ? '獲取驗證碼' : `${countDownTime}秒後獲取`}}</el-button>
data() { return { BtnStatus: true, countDownTime: 60 } }
每次頁面重新載入即重新整理頁面的時候,都從本地儲存裡獲取存的時間戳,如果有的話,呼叫方法
1created() { 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 },