需求:点击发送验证码时,发送后台匹配,如果格式不对或已经存在的,发送验证码按钮不变,还是能点发送,如果匹配正确,进入倒计时,并且按钮灰色, 用到函数setInterval 计时器函数
function settime(obj) { #定义按钮点击事件
$.ajax({
url:'/reg',
type:'POST',
data:$('#f1').serialize(), #提交所有的值,
success:function (data) { 返回后执行的函数
if(data=='ok'){ 如果返回的是OK,进入倒计时
let num=60; 设置倒计时时间 60秒 let和var都是给变量赋值,具体的找度娘
let t=setInterval(()=>{ #前面的let t 是接收计时器返回的数据,setInterval 是每秒+1的,let t就是把这个值赋给他
为什么要拿这个值,因为拿到这个值可以用这个值结束计时。
if (num==0){
clearInterval(t) 如果num的值减到0 结束倒计时,一定要结束,要不然num的拿就出现负数一直加
}else
num-=1 如果num的值不等于0 就执行else中的,每秒num减1
obj.setAttribute("disabled", true); obj是点击事件传入的值,setAttribute("disabled", true)设置不可点击
obj.value=num+'秒' 把点击按钮的值 改成倒计时秒数 + 秒
if (num==0){
obj.removeAttribute("disabled"); 如果倒计时到0 移除不可点击
obj.value= '发送验证' 值 改成发送验证
}
},1000) 1000 是setInterval 计时器函数
}else { 此处省略 else是判断AJAX返回值的,else表示返回不是OK。去表单显示相应的错误}
}
})
|