<li class="telNumber">
<span class="dis">手机号码</span>
<input class="input" v-model="userInfo.mobile" />
<button v-if="!sending" class="button" @click="send()">
获取验证码
</button>
<button v-else disabled class="button disabled">
{{ leftSecond }}秒后重发
</button>
</li>
通过设置sending为true或者false来判断短信验证码是否正在发送的计时中,从而显示获取验证码或者进入倒计时,防止前端页面一直点击发送验证码。
//倒计时
timeDown() {
console.log('进入倒计时')
this.leftSecond = this.second
//创建定时器
const timmer = setInterval(() => {
//计数器减一
this.leftSecond--
if (this.leftSecond <= 0) {
//停止定时器
clearInterval(timmer)
//还原计数器
this.leftSecond = this.second
//还原按钮状态
this.sending = false
}
}, 1000)
}
javascript中原生的计时器函数setInterval()表示开始计时 里面可以接收两个参数 第一个可接收函数类型的参数,表示在计时的过程中做什么 第二个参数表示计时的时间间隔
clearInterval()表示停止计时 里面可接收的参数为一个计时器的引用