发送短信验证码是一个非常常见的功能,
现在的需求是:
用户点击“获取验证码”的时候,请求后端接口,发送短信验证码,
按钮置灰不可点,变成“重发(xx s)”, 40s后,出现“发送语音验证码”按钮,
60s后,“重发”按钮再变成“获取验证码”
肯定是要用 setInterval() 了,但是这里边就涉及到使用 clearInterval() 清除周期性执行,
见示例:
<a class="c-right-btn btn-send-captcha">获取验证码</a>
<a class="c-right-btn btn-send-captcha-disable" style="display:none;"></a>
window._timer = 60;
var _send = setInterval(function(){
console.log(_timer);
if(_timer > 0){
$(".btn-send-captcha").hide();
$(".btn-send-captcha-disable").show().text("重发(" + _timer + "s)");
_timer --;
}
if(_timer == 40){
$(".btn-send-voice").show();
}
if(_timer <= 0){
$(".btn-send-captcha-disable").text("").hide();
$(".btn-send-captcha").show();
window.clearInterval(_send);
_timer = 60;
return false;
}
}, 1000);