vue实现一个按钮计时器

运用实际场景:需要发一个验证码,然后等60秒才能进行第二次点击

 <div class="vcode-btn" @click.prevent="getVcode">
                    <i v-show="vcode">获取验证码</i>
                    <i v-show="!vcode">{{count}}s</i>
                    </div>
<script>
data() {
	return {
		      vcode: true,
		      count: '',
		      timer: null
	}

methods: {
  //获取验证码
    getVcode() {
      const reg = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/; # 获取验证码前,先验证手机号的有效性
      if (reg.test(this.UserInfo.phone) && this.UserInfo.phone.length !== 0) {
          this.vcode = false
          let TIME_COUNT = 60;
          if (!this.timer) {
            this.count = TIME_COUNT
            this.timer = setInterval(() => {
              if (this.count > 0 && this.count <= 60) {
                this.count --
              } else {
                this.vcode = true
                clearInterval(this.timer)
                this.timer = null
              }
            }, 1000)
          }
          const url = api.verifycode_url.url
          let phone = {
            mobile: this.UserInfo.phone
          }
          axios.post(url, phone).then(resp => {
            if (resp.data.status === "success") {
              this.$message({
                type: 'success',
                message: "验证码发送成功,请注意查收!"
              })
            } else {
              this.$message({
                type: 'error',
                message: resp.data.msg
              })
            }
          })
      } else {
        this.$message({
          type: 'error',
          message: '请输入正确手机号'
        })
      }
    },

}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值