vue实现发送验证码计时器(防止刷新)

发送验证码按钮

<template>
  <div>
    <button :disabled="disable" @click="send">{{text}}</button>
  </div>
</template>

实现思路:在页面初始化,从本地拿到存储的时间戳,判断是否为0。如果不为0就继续进行减1操作。

data () {
    return {
      text: "发送验证码",
      time: 5,
      timer: null,
      disable: false
    }
},
created () {
    // 本地拿到时间
    const time = localStorage.getItem('time');
    // 判断是否大于0
    if (time && time > 0) {
       //  解决刷新页面按钮有空白情况
      this.text = time + "s后重新发送"
      this.time = time
      this.send();
    }
  },

实现方法:点击按钮首先将按钮禁用防止多次点击触发定时器,然后将计数存入本地,防止刷新数据丢失。 

 methods: {

    send () {
        // 点击按钮,禁用按钮,防止多次点击
      this.disable = true
      this.text = this.time + "s后重新发送"
      localStorage.setItem('time', this.time)
      this.timer = setInterval(() => {
        if (this.time > 0) {
          this.time--
          localStorage.setItem('time', this.time)
          this.text = this.time + "s后重新发送"
        } else {
          clearInterval(this.timer);
          this.time = 5
          this.disable = false
          this.text = '重新发送'
        }
      }, 1000)
    }
  }

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成序猿@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值