
js中两种定时器,setTimeout和setInterval实现验证码发送
发布日期:2021-05-08 13:44:37
浏览次数:9
分类:精选文章
本文共 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); }
该实现的优点是:
- 支持多次自动重发
- 定时任务不会被浏览器中断
- 页面刷新后自动重新发送
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月06日 19时08分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
2019-03-05
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
2019-03-05
C语言的数值溢出问题(上)
2019-03-05
BottomNavigationView控件item多于3个时文字不显示
2019-03-05
函数指针的典型应用-计算函数的定积分(矩形法思想)
2019-03-05
8051单片机(STC89C52)八个LED灯闪烁
2019-03-05
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
2019-03-05
用 wxPython 打印你的 App
2019-03-05
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05
Linux下安装MySql过程
2019-03-05
android:使用audiotrack 类播放wav文件
2019-03-05
vue通过better-scroll 封装自定义的下拉刷新组件
2019-03-05
android解决:使用多线程和Handler同步更新UI
2019-03-05
vue自定义封装Loading组件
2019-03-05
Element UI 中动态路由的分析及实现
2019-03-05
使用springMVC配置视图管理器后找不到指定的页面
2019-03-05
关于js中对于Promise的深入理解
2019-03-05
杭电 2007 平方和与立方和(输入数据的大小顺序并不能默认)
2019-03-05
十大排序算法之三:插入排序(Python)
2019-03-05
利用Python实现循环队列
2019-03-05