点击按钮实现60秒倒计时,并且实现按钮不可点击,60秒之后才可点击,以及按钮的文字改变
第一种场景:
// 60秒倒计时
var countdown = 60;
var timer;
function settime(val) {
timer = setInterval(function() {
$("#sendCode").attr('disabled', true);
$("#sendCode").addClass('activeColor');
countdown--;
$("#sendCode").html("重新发送(" + countdown + ")");
if (countdown == 0) {
clearInterval(timer);
$("#sendCode").attr('disabled', false);
$("#sendCode").removeClass('activeColor');
$("#sendCode").html("重新获取验证码");
countdown = 60;
}
}, 1000)
}
// cookie的倒计时
function getRemailTime(remaintime) {
var timestamp = Date.parse(new Date());
var nowtime = timestamp / 1000;
// if (remaintime) {
var rtime = nowtime - remaintime;
curCount = 60 - rtime;
if (curCount > 0) {
$("#sendCode").attr('disabled', true);
$("#sendCode").addClass('activeColor');
$("#sendCode").html("重新发送(" + (60 - rtime) + ")");
InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
}
// }
}
function SetRemainTime() {
if (curCount <= 0) {
window.clearInterval(InterValObj); //停止计时器
$("#sendCode").attr('disabled', false);
$("#sendCode").removeClass('activeColor');
$("#sendCode").html("重新获取验证码");
// $(".valiTig").hide();
} else {
curCount--;
$("#sendCode").attr('disabled', true);
$("#sendCode").addClass('activeColor');
$("#sendCode").html("重新发送(" + curCount + ")");
}
}
第二种场景:
html文件:
<div class="layui-form-item layui-form-item1">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-block">
<input type="tel" name="phone" lay-verify="required|phone" autocomplete="off" class="layui-input" placeholder="请输入">
<div class="tips">请输入您的手机号码</div>
</div>
</div>
<div class="layui-form-item layui-form-item1">
<label class="layui-form-label">验证码</label>
<div class="layui-input-block">
<a id="messageBtn" onclick="getNumber()" data-on=0>免费获取短信验证码</a>
<input type="text" name="code" lay-verify="" autocomplete="off" class="layui-input" id="messageInput">
<div class="tips">请输入短信验证码</div>
</div>
</div>
js文件:
//--获取短信验证码--
var getNumber = function(){var phone = $('input[name="phone"]').val();
if(phone == ''){
layer.alert('请先输入您的手机号码!');
}else{
//--p0为业务id--
console.log($(this).data('on'))
if($(this).data('on') == 0){
getAjax({ 'p0':p0,'p1': 'sendMobile', 'phone': phone}, function(e) {
if(e.status == 0){
$("#messageBtn").parent().find('.tips').show().html("验证码已发送,请查收");
if(curCount > 0 ){
return false;
}
curCount = count;
$('#messageBtn').data('on',1);
$("#messageBtn").addClass('layui-btn-disabled').css('background','#f2f2f2');
$("#messageBtn").html( curCount + "s后重新获取");
//--启动计时器,1秒执行一次--
InterValObj = window.setInterval(SetRemainTime, 1000);
var cName = $('input[name="name"]').val(),
cSname = $('input[name="author"]').val();
milo.cookie.set("phone",phone);
milo.cookie.set("mobileTime",e.data);
}else{
layer.alert(e.msg)
}
});
}
}
}
//--短信验证码倒计时--
var SetRemainTime = function SetRemainTime() {
if (curCount <= 0) {
window.clearInterval(InterValObj);
$('#messageBtn').removeClass('layui-btn-disabled').css('background','#d3fce2');
$("#messageBtn").html("重新获取验证码");
$("#messageBtn").parent().find('.tips').hide();
$('#messageBtn').data('on',0);
if(milo.cookie.get('mobileTime')){
milo.cookie.clear('mobileTime');
milo.cookie.clear('phone');
}
}else {
curCount--;
$("#messageBtn").html(curCount + "s后重新获取");
}
}
//--页面初始化--
var isMobileTime = function(){
var remaintime = milo.cookie.get("mobileTime"),
phoneNum = milo.cookie.get("phone"),
cName = milo.cookie.get("name"),
cSname = milo.cookie.get("sname"),
timestamp = Date.parse(new Date()),
nowtime = timestamp / 1000;
if (remaintime) {
var rtime = remaintime - nowtime;
curCount = rtime;
if (rtime > 0 ) {
$('input[name="phone"]').val(phoneNum);
$("#messageBtn").html(curCount + "s后重新获取");
$('#messageBtn').data('on',1);
$('#messageBtn').addClass('layui-btn-disabled').css('background','#f2f2f2');;
InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
}
}
}
isMobileTime();