博客
关于我
js中两种定时器,setTimeout和setInterval实现验证码发送
阅读量:378 次
发布时间:2019-03-05

本文共 1814 字,大约阅读时间需要 6 分钟。

1、setInterval实现

页面加载时自动执行以下脚本:

$(function(){ /************************获取验证码点击事件********************************/ $("#validCode").click(function(){ calTime(); timer = window.setInterval(calTime,1000); }); }); var time = 6; function calTime(){ if(time>0){ $("#validCode").val("("+time+"s)后重发"); $("#validCode").prop("disabled",true); time--; }else{ window.clearInterval(timer); $("#validCode").val("点击重发"); $("#validCode").prop("disabled",false); time = 6; return; } }

该实现通过setInterval函数在页面加载时自动执行,设置了一个定时任务:

每隔1000毫秒调用calTime函数,用于处理验证码发送计时逻辑:

具体实现逻辑如下:

var time = 6; //初始时间设置为6秒 function calTime(){ if(time>0){ //如果时间大于0,显示剩余秒数并禁用按钮 $("#validCode").val("("+time+"s)后重发"); $("#validCode").prop("disabled",true); time--; }else{ //否则清除定时任务,恢复按钮状态 window.clearInterval(timer); $("#validCode").val("点击重发"); $("#validCode").prop("disabled",false); time = 6; return; }

该实现的优点是:

  • 支持多次自动重发
  • 定时任务不会被浏览器中断
  • 页面刷新后自动重新发送

2、setTimeout实现

页面加载时自动执行以下脚本:

$(function(){ /************************获取验证码点击事件********************************/ $("#validCode").click(function(){ calTime(); }); }); var time = 6; function calTime(){ if(time>0){ $("#validCode").val("("+time+"s)后重发"); $("#validCode").prop("disabled",true); time--; }else{ $("#validCode").val("点击重发"); $("#validCode").prop("disabled",false); time = 6; return; } window.setTimeout(calTime,1000); }

该实现通过setTimeout函数在页面加载时自动执行,设置了一个单次定时任务:

每隔1000毫秒调用calTime函数,用于处理验证码发送计时逻辑:

具体实现逻辑如下:

var time = 6; //初始时间设置为6秒 function calTime(){ if(time>0){ //如果时间大于0,显示剩余秒数并禁用按钮 $("#validCode").val("("+time+"s)后重发"); $("#validCode").prop("disabled",true); time--; }else{ //否则清除定时任务,恢复按钮状态 $("#validCode").val("点击重发"); $("#validCode").prop("disabled",false); time = 6; return; } //window.setTimeout("calTime()",1000); window.setTimeout(calTime,1000); }

该实现的优点是:

  • 支持多次自动重发
  • 定时任务不会被浏览器中断
  • 页面刷新后自动重新发送

转载地址:http://syqwz.baihongyu.com/

你可能感兴趣的文章
java 多态类型转换
查看>>
常用正则表达式
查看>>
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
查看>>
Java判断字符串是否为金额
查看>>
angr学习笔记(7)(malloc地址单元符号化)
查看>>
结构型设计在工作中的一些经验总结
查看>>
如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
查看>>
2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
查看>>
Netty4服务端入门代码示例
查看>>
Spring源码:prepareBeanFactory(beanFactory);方法
查看>>
AcWing 828. 模拟栈
查看>>
(20200328已解决)从docker容器内复制文件到宿主机
查看>>
OpenAI Gym简介及初级实例
查看>>
int 转 CString
查看>>
Edit编辑框自动换行与长度
查看>>
Java面向对象
查看>>
JAVA带标签的break和continue
查看>>
Java获取线程基本信息的方法
查看>>
(Python学习笔记):字典
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>