uniapp——获取验证码倒计时功能

<template>
    <view class="get-phone-box">
		<view class="main">
			<view class="item-wrap cy-flex">
				<text class="label">手机号</text>
				<input class="input" type="number" placeholder="请输入手机号" v-model="formData.phone" maxlength="11" />
			</view>
			<view class="item-wrap cy-flex">
				<text class="label">验证码</text>
				<input class="input" type="number" placeholder="请输入验证码" v-model="formData.vercode" maxlength="6" />
				<button class="send" @click="sendMobileCode" :disabled="counting">{{ counting ? `${count}秒后重新获取` : '获取验证码' }}</button>
			</view>
			<button type="default" class="save-btn" @click="checkCode" :disabled="isDisabled">确定</button>
		</view>
	</view>
</template>
<script>
    export default {
        data() {
			return {
				count: 60, // 倒计时时长,单位为秒
				counting: false, // 是否正在倒计时
				
				formData: {
					phone: '',
					vercode: ''
				}
				
			}
		},
      methed:{
        // 发送手机动态码
		sendMobileCode() {
			if (this.counting) return;
			var reg = /^1[3456789]\d{9}$/;
			if (!reg.test(this.formData.phone)) {
				uni.showToast({
					title: '请输入正确的手机格式',
					icon: 'none'
				})
				return
			}
			this.counting = true;
			const timer = setInterval(() => {
				this.count--;
				if (this.count <= 0) {
					clearInterval(timer);
					this.counting = false;
					this.count = 60; // 重置倒计时时长
				}
			}, 1000);
			this.getCaptcha()
		},
        // 获取验证码的接口
		async getCaptcha() {
			try {
				let res = await sendNumberCode({ //调用后台接口,把参数传给后台
					phone: this.formData.phone,
					type: 1
				});
				if (res.code == 0) { //调用成功之后的操作
					uni.showToast({
						title: res.data,
						icon: 'none'
					})
				}
			} catch (err) {
				console.log(err);
				//TODO handle the exception
			}
		}
     }
  }
</script>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值