获取手机验证码倒计时怎么写

2026-09-29 技术分享

注册、登录、找回密码都常见:填手机号,点获取,按钮变成「重新发送(60)」一路往下减,减完才能再点。本例一共数 60 秒,跟常见短信间隔一致;想本地快点看完效果,可以把下面的 COUNT_DURATION 临时改成 5。

手机号框和获取按钮如何对应

哪个是手机号、哪个是获取按钮,靠元素上的 id 对应。本例手机号框是 PhoneNum,获取按钮是 YzmBtn;验证码框是 CodeNum,只用于填写短信数字,不参与倒计时。页面上改了 id,smsCode.js 里要一并改掉,否则点击无效。

引入顺序:先 jQuery,再 Layui,最后 smsCode.js。顺序反了,提示和点击会异常。外观在 css/smsCode.css 里调整。

获取按钮等待中的样式怎么写

需要分清两种外观:可点击时深蓝底、黄字、手型光标;等待倒计时时略透明、禁止光标,文案改为「重新发送(n)」。宽高不要写死,用 padding: 10px 16px 撑开,文案变长也不易变形。

图片1.png

输入框边框、间距按设计修改。等待态用浏览器自带的禁用状态即可,不必另做一套灰按钮类名来回切换,避免漏加类名后仍显示为可点。

手机号填错时如何提示

点击获取前先检查号码格式,空号或位数不对就停止。规则:1 开头,第二位 3~9,再跟 9 位数字,写作 /^1[3-9]\d{9}$/。

图片2.png

取值前去掉首尾空格。格式不对时用 layer.msg 提示「手机号码有误,请重填」,文案按项目约定。这坑我见过不止一次:号段规则过旧,新号段会被误判,需与产品确认后再改。

获取验证码后的倒计时怎么做

流程可以概括成三步:先禁用按钮,文案改为「重新发送(秒数)」,每秒减 1;减到 0 后恢复「获取验证码」并可再次点击。

COUNT_DURATION 为总秒数,countDown 为剩余秒数。timer 保存本次倒计时,必须保留,否则中途无法清除,按钮会一直处于禁用。

图片3.png

若已在倒计时中则直接返回,避免重复启动导致秒数错乱。按钮禁用后连续点击无效。使用 setTimeout 逐秒调度,结束时便于清除。

点击时这样接入:

图片4.png

接入发送短信时如何修改

号码校验通过后,先请求发送短信,成功后再开始倒计时。发送失败时保持按钮可点,便于立即重试,避免一点击就禁用导致无法操作。

图片5.png

请求地址、成功失败判断按项目约定替换。若还需图形验证码防刷,将结果一并提交。总秒数只改 COUNT_DURATION;倒计时相关函数一般无需改动。

案例下载
下载demo本地运行
技术分享