1. 问题场景
获取短信验证码发送短信后,将按钮置灰60秒后可以发送下一次验证码。
2. 示例代码
<!DOCTYPE HTML>
<html>
<head>
<title>JS实现点击之后60秒后才可以再次点击</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<style type="text/css">
.cen {
text-align: center
}
</style>
</head>
<body>
<div class="cen">
<!-- button获取 -->
<!-- <button id='testcc'>免费获取验证码</button> -->
<a style="text-decoration:underline;">
<span id="test" onclick="sendsms(this)" style="font-size:12px;color:#0000FF" mce_style="font-size:12px">发送手机验证码</span>
</a>
<script type="text/javascript">
var waitTime = 60;
function sendsms(e){
/*发送验证码功能*/
//若发送验证码成功,则调用倒计时函数
time(e);
}
function time(ele) {
if (waitTime == 0) {
//button可以使用disabled属性
ele.disabled=false;
//span等需要设置onclick方法
ele.setAttribute("onclick", "sendsms(this)");
ele.innerHTML = "发送手机验证码";
waitTime = 60;// 恢复计时
} else {
//button可以使用disabled属性
ele.disabled=true;
//span等需要去掉onclick方法
ele.removeAttribute("onclick");
ele.innerHTML = waitTime + "秒后可以重新发送";
waitTime--;
setTimeout(function() {
time(ele)// 关键处-定时循环调用
}, 1000)
}
}
</script>
</body>
</html>
注意:button设置不可用时可以使用disabled属性,span等设置不可用时需要设置或取消onclick事件。