点发送验证码后按钮变成 60 秒倒计时,刷新页面按钮立刻又能点,同一个号码被连着刷走几十条短信。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,倒计时只存在页面内存里,刷新页面就清空,服务端也没有按手机号记录发送时间,前端设的这点限制随便绕一下就没了,等于没设。
「验证码倒计时重置」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。报错里带路径的,先去看那个路径在不在、权限对不对。
<button id='send' data-left='42' disabled>42s 后重发</button> <span role='status' aria-live='polite'>验证码已发送</span>
同一份配置存在多处的,先确认改的是被加载的那一份。
具体做法是,服务端按手机号记录最后一次发送时间并强制间隔;前端倒计时的起点取接口返回的剩余秒数,不要写死 60;刷新后按本地保存的时间戳恢复按钮的倒计时状态。
最后用这个标准收尾,发完立刻刷新页面,按钮仍在倒计时,再调接口也返回剩余秒数,不会重新发。
