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函数库-集合框架
Apr 27 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
Dec 25 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
Javascript单例模式的介绍和实例
Oct 08 Javascript
详解使用nvm安装node.js
Jul 18 Javascript
Vue数组更新及过滤排序功能
Aug 10 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
Sep 19 Javascript
JavaScript模拟实现自由落体效果
Aug 28 Javascript
js canvas实现写字动画效果
Nov 30 Javascript
详解Vue2.5+迁移至Typescript指南
Aug 01 Javascript
使用Angular material主题定义自己的组件库的配色体系
Sep 04 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
php中一个完整表单处理实现代码
2011/11/10 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
Python3实现飞机大战游戏
2020/04/24 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
简历的自荐信
2013/12/19 职场文书
生产厂厂长岗位职责
2013/12/25 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
村委会主任先进事迹
2014/01/15 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
初中数学教学反思范文
2016/02/17 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js