当前位置: 首页 > news >正文

注册发送手机短信

 ### 整体流程总结
1. 1.
用户点击"获取验证码"按钮触发 `sendSms` 函数
2. 2.
验证手机号格式和非空状态
3. 3.
禁用按钮并调用发送验证码API
4. 4.
启动倒计时(立即更新一次状态消除延迟)
5. 5.
倒计时结束后恢复按钮状态
6. 6.
异常情况下捕获错误并恢复按钮状态

 

      <el-form-item prop="phonenumber"><el-row :gutter="10"><el-col :span="16"><el-inputv-model="registerForm.phonenumber"type="text"size="large"auto-complete="off"placeholder="手机号"style="width: 205px;"><template #prefix><svg-icon icon-class="phone" class="el-input__icon input-icon" /></template></el-input></el-col><el-col :span="8"><el-button type="primary" size="large" @click="sendSms" :disabled="sendCodeDisabled" style="width: 120px;">{{ sendCodeText }}</el-button></el-col></el-row></el-form-item>

const sendSms = async () => {// 验证手机号if (!registerForm.value.phonenumber) {ElMessage.error('请输入手机号')return}if (!/^1[3-9]\d{9}$/.test(registerForm.value.phonenumber)) {ElMessage.error('请输入正确的手机号格式')return}try {// 禁用按钮sendCodeDisabled.value = true// 调用发送验证码API/* const response = await sendCode(registerForm.value.phonenumber) */ElMessage.success('验证码发送成功')// 开始倒计时// 立即更新一次状态,消除首次延迟countdown.value--;sendCodeText.value = `${countdown.value}秒后重新获取`;const timer = setInterval(() => {if (countdown.value <= 1) {clearInterval(timer)sendCodeText.value = '获取验证码'countdown.value = 60sendCodeDisabled.value = false} else {countdown.value--sendCodeText.value = `${countdown.value}秒后重新获取`}}, 1000)} catch (error) {ElMessage.error(error.msg || '验证码发送失败,请稍后重试')sendCodeDisabled.value = false}

2.2 发送验证码流程
1. 1.
禁用按钮防止重复点击 : sendCodeDisabled.value = true
2. 2.
调用发送验证码API :(当前代码注释掉,实际项目中需取消注释)

1. 3.
显示成功提示 : ElMessage.success('验证码发送成功') 2.3 倒计时实现(解决首次延迟问题)

// 立即更新状态,消除首次延迟
countdown.value--;
sendCodeText.value = `${countdown.value}秒后重新获取`;// 启动定时器
const timer = setInterval(() => {if (countdown.value <= 1) {// 倒计时结束,重置状态clearInterval(timer)sendCodeText.value = '获取验证码'countdown.value = 60sendCodeDisabled.value = false} else {// 更新倒计时countdown.value--sendCodeText.value = `${countdown.value}秒后重新获取`}
}, 1000)

 

const sendCodeDisabled = ref(false) // 控制按钮禁用状态
const countdown = ref(60) // 倒计时秒数
const sendCodeText = ref('获取验证码') // 按钮显示文本

http://www.dtcms.com/a/303766.html

相关文章:

  • bash变量名不能有连字符
  • Spark初探:揭秘速度优势与生态融合实践
  • RabbitMQ面试精讲 Day 7:消息持久化与过期策略
  • H.264视频的RTP有效载荷格式(翻译自:RFC6184 第5节 RTP有效载荷格式)
  • 网络协议——MPLS(多协议标签转发)
  • 力扣30 天 Pandas 挑战(3)---数据操作
  • LeetCode 283 - 移动零
  • CTF-Web学习笔记:服务端请求伪造(SSRF)篇
  • 单片机学习笔记.PWM
  • 第4章唯一ID生成器——4.5 美团点评开源方案Leaf
  • 医疗AI新基建:MCP与A2A协议的破局与前瞻
  • JVM 崩溃(Fatal Error)解决方法
  • 影刀RPA_初级课程_玩转影刀自动化_EXCEL操作自动化
  • 《C++初阶之STL》【list容器:详解 + 实现】
  • JSON解析
  • Spring IOC 基于Cglib实现含构造函数的类实例化策略
  • 循环神经网络——动手学深度学习7
  • 板凳-------Mysql cookbook学习 (十二--------7)
  • SpringBoot 的@Repository 等注解的底层实现原理
  • 智能体安全与可信AI:防护机制与伦理考量
  • SpringBoot之起步依赖
  • 【使用python中列表注意事项】
  • Windows使用Powershell自动安装SqlServer2025服务器与SSMS管理工具
  • 【自存用】mumu模拟器+mitmproxy配置
  • ADSP-21565的SigmaStudio图形化编程详解
  • Linux 完整删除 Systemd 服务的步骤
  • 递归、搜索与回溯算法核心思想解析
  • Agent常用搜索引擎Tavily使用学习
  • linux中简易云盘系统项目实战:基于 TCP协议的 Socket 通信、json数据交换、MD5文件区别与多用户文件管理实现
  • 配置daemon.json使得 Docker 容器能够使用服务器GPU【验证成功】