为什么发送短信验证码的倒计时一直停留在60秒,没有开始倒计时
<div class="Pop-ups-code">
<input type="text" placeholder="请输入"/>
<p class="code" @click="codeDialog" id="sendcodeid" :class="{ disabled: isSending }">{{ isSending ? count + '秒' : '获取验证码' }}</p>
</div>
.code.disabled {
background-color: #ccc;
cursor: not-allowed;
}
data: function() {
return {
isSending: false, // 用来跟踪是否正在发送验证码或倒计时
count: 60, // 倒计时初始值
}
},
codeDialog() {
if (!this.img_id) {
this.drawing();
layer.open({
content: '请输入正确的图形验证码',
skin: 'msg',
time: 2 //2秒后自动关闭
});
return false;
}
if (!this.captcha) {
layer.open({
content: '请输入短信验证码',
skin: 'msg',
time: 2 //2秒后自动关闭
});
return false;
}
if (this.isSending) {
// 如果正在发送或倒计时中,则不执行任何操作
return;
}
this.isSending = true; // 开始发送验证码或倒计时
// this.count = 60; // 重置倒计时
$.ajax({
url: commonUrl + 'send/code',
type: 'post',
data: JSON.stringify({
"img_id":this.img_id
}),
dataType: 'json',
contentType: 'application/json',
success: function(res) {
if (res.result_code == '0') {
if (that.captcha) {
layer.open({
content: '验证码已发送,5分钟内有效。若60秒内没有收到验证码,请点击重新发送',
skin: 'msg',
time: 4 //2秒后自动关闭
});
}
// 开始倒计时
var timer = setInterval(() => { // 使用箭头函数
this.count--;
if (this.count == 0) {
clearInterval(timer);
this.isSending = false; // 倒计时结束,允许再次点击
this.count = 60; // 重置倒计时,如果需要的话
}
}, 1000);
}else{
layer.open({
content: '失败:'+res.result_message,
skin: 'msg',
time: 2 //2秒后自动关闭
});
this.isSending = false; // 发送失败,允许再次点击
}
},
error: (xhr, status, error) => {
this.isSending = false; // 发送失败,允许再次点击
}
})
},