js代码实现点击按钮出现60秒倒计时


Posted in Javascript onJanuary 28, 2021

比如,一些网站上的手机短信认证的功能,有类似实现点击按钮后,倒计时60秒才能再次点击发送的效果。

此例子用Javascript实现点击按钮后,倒计时60秒才能再次点击发送验证码的功能。

例子1:Javascript 实现 点击按钮 倒计时60秒方可再次点击发送的效果

<input type="button" id="btn" value="免费获取验证码" />
<script type="text/javascript">
var wait=60;
function time(o) {
 if (wait == 0) {
 o.removeAttribute("disabled"); 
 o.value="免费获取验证码";
 wait = 60;
 } else { 

 o.setAttribute("disabled", true);
 o.value="重新发送(" + wait + ")";
 wait--;
 setTimeout(function() {
 time(o)
 },
 1000)
 }
 }
document.getElementById("btn").onclick=function(){time(this);}
</script>

例子2:点击按钮出现60秒倒计时js代码

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>无标题文档</title> 
<script type="text/javascript" src="js/jquery.js"></script> 
</head> 

<body> 
<input type="button" id="btn" value="免费获取验证码" onclick="settime(this)" /> 
<script type="text/javascript"> 
var countdown=60; 
function settime(val) { 
if (countdown == 0) { 
val.removeAttribute("disabled"); 
val.value="免费获取验证码"; 
countdown = 60; 
} else { 
val.setAttribute("disabled", true); 
val.value="重新发送(" + countdown + ")"; 
countdown--; 
} 
setTimeout(function() { 
settime(val) 
},1000) 
} 
</script> 
</body> 
</html>

例子3:点击按钮后,60秒倒计时后才能继续可以点击,按钮上还能显示倒计时

预想的效果图:

js代码实现点击按钮出现60秒倒计时

这是微信公众平台上的代码

function E() {
var e = $("#mobile"), t = (new Date).getTime(), n = Math.floor((t - b) / 1e3);
g && clearTimeout(g), n >= 60 ? (e.prop("readonly", !1), y = !0, $("#sendmobile").html("发送验证码").attr("disabled", !1).removeClass("btn_disabled")) : (e.prop("readonly", !0), y = !1, $("#sendmobile").attr("disabled", !0).addClass("btn_disabled").html("%s秒后可重发".sprintf(60 - n)), g = setTimeout(E, 1e3));
}
function S() {
function e() {
if (!y) return;
var e = $.trim(n.val());
l.mobile(e) ? t.attr("disabled", !1).removeClass("btn_disabled") : t.attr("disabled", !0).addClass("btn_disabled");
}
var t = $("#sendmobile"), n = $("#mobile");
n.keyup(e).blur(e), e(), t.click(function() {
var e;
t.attr("disabled") !== "disabled" && (e = "+86" + $.trim(n.val()), b = (new Date).getTime(), E(), o.post({
url: w ? "/cgi-bin/formbyskey" : "/acct/formbyticket",
data: {
form: "mobile",
action: "set",
f: "json",
mobile: e
},
mask: !1
}, function(e) {
var t = e.BaseResp.Ret;
if (t == 0) u.suc("验证码已经发送"); else {
switch (t) {
case -13:
u.err("登录超时,请重新登录");
break;
case -35:
u.err("该手机已经登记过2次,请使用别的手机号进行用户信息登记");
break;
default:
u.err("验证码发送失败");
}
b = 0;
}
}));
});
}

这段代码小编就是不知道怎么才能调用到自己的代码上来,经过高人指点有了一些头寻。

高人的解题思路:如果严格的话,这个还要结合后台获取时间的,要不然别人刷新一下就行了。
                            如果不严格,用个cookie也可以。

<script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
<script src="http://yukon12345.com/yukon12345.com/js/jquery.cookie.js"></script>
<script>
 time1=$.cookie("time1")||60;
 time2=$.cookie("time2")||60;
 dis1=$.cookie("dis1")
 dis2=$.cookie("dis2")
 function countDown($obj){

 var time;
 if($obj.attr("id")=="b1")
 {
 time=--time1;
 $.cookie("time1",time,{"expires":1});
 if(time<=0){
 time1=60;
 $obj[0].disabled=!$obj[0].disabled
 clearInterval(inter1)
 $obj.text("点击发送")
 $.cookie("dis1","")
 return
 }
 }
 if($obj.attr("id")=="b2")
 { time=--time2;
 $.cookie("time2",time,{"expires":1});
 if(time<=0){
 time1=60;
 $obj[0].disabled=!$obj[0].disabled
 clearInterval(inter2)
 $obj.text("点击发送")
 $.cookie("dis2","")
 return
 }
 }

 $obj.text(time+"秒后重新发送")

 }

 $(function(){
 if(dis1="dis"){
 $("#b1")[0].disabled='disabled'
 inter1=setInterval(function(){countDown($("#b1"))},1000)
 }
 if(dis2="dis"){
 $("#b2")[0].disabled='disabled'
 inter2=setInterval(function(){countDown($("#b2"))},1000)
 }
$(".cd").bind("click",function(){
 $this=$(this);
 //没有被禁用时禁用并执行倒计时
 if(!$this[0].disabled){
 $this[0].disabled='disabled';
 if($this.attr("id")=="b1"){
 $.cookie("dis1","dis",{"expires":1})
 inter1=setInterval(function(){countDown($this)},1000)
 }
 if($this.attr("id")=="b2"){
 $.cookie("dis2","dis",{"expires":1})
 inter2=setInterval(function(){countDown($this)},1000)
 }

 }
})

})
</script>

<button id="b1" class="cd" >点击发送</button><br>
<button id="b2" class="cd" >点击发送</button><br>

更多关于倒计时的文章请查看专题: 《倒计时功能》

大家通过这三个例子讲解有没有点思路了,那就动手实现一下吧,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript的public、private和privileged模式
Dec 28 Javascript
html a标签-超链接中confirm方法使用介绍
Jan 04 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
javascript计时器详解
Feb 28 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
Dec 02 Javascript
深入理解bootstrap框架之第二章整体架构
Oct 09 Javascript
vue开发调试神器vue-devtools使用详解
Jul 13 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
Jun 13 Javascript
使用 Vue 实现一个虚拟列表的方法
Aug 20 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 29 Javascript
js实现无缝滚动特效
Dec 20 #Javascript
基于JavaScript实现动态创建表格和增加表格行数
Dec 20 #Javascript
原生js页面滚动延迟加载图片
Dec 20 #Javascript
javascript实现的网站访问量统计代码
Dec 20 #Javascript
js实现n秒倒计时后才可以点击的效果
Dec 20 #Javascript
图解js图片轮播效果
Dec 20 #Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
Dec 20 #Javascript
You might like
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
php实例分享之二维数组排序
2014/05/15 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
2019/08/05 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
分析python服务器拒绝服务攻击代码
2014/01/16 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python如何获取服务器硬件信息
2017/05/11 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
促销活动计划书
2014/05/02 职场文书
化学工程专业求职信
2014/08/10 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
收款授权委托书
2014/10/02 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python