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 相关文章推荐
JS删除字符串中重复字符方法
Mar 09 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
Oct 12 Javascript
Bootstrap基本样式学习笔记之表格(2)
Dec 07 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
Mar 15 Javascript
JQuery实现图片轮播效果
May 08 jQuery
vue写一个组件
Apr 09 Javascript
vue自定义指令directive的使用方法
Apr 07 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 Javascript
微信小程序实现蒙版弹出窗功能
Sep 17 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
Nov 05 Javascript
JavaScript中break、continue和return的用法区别实例分析
Mar 02 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
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
php array_merge下进行数组合并的代码
2008/07/22 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
2018/01/13 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
深入Python解释器理解Python中的字节码
2015/04/01 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python抽象类的新写法
2015/06/18 Python
Python 的类、继承和多态详解
2017/07/16 Python
python3+PyQt5实现柱状图
2018/04/24 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
用Python进行websocket接口测试
2020/10/16 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
中职应届生会计求职信
2013/10/23 职场文书
早读迟到检讨书
2014/01/24 职场文书
希特勒的演讲稿
2014/05/23 职场文书
2014年电厂工作总结
2014/12/04 职场文书
评职称个人总结
2015/03/05 职场文书