js代码实现点击按钮出现60秒倒计时
作者:bea
比如,一些网站上的手机短信认证的功能,有类似实现点击按钮后,倒计时60秒才能再次点击发送的效果。 此例子用Javascript实现点击按钮后,倒计时60秒才能再次点击发送验证码的功能。 例子1:Javascript 实现 点击按钮 倒计时60秒方可再次点击发送的效果 <input type="button" id="btn" value="免费获取验证码" /><script type="text/javascript">var wait=60;f
比如,一些网站上的手机短信认证的功能,有类似实现点击按钮后,倒计时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代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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秒倒计时后才能继续可以点击,按钮上还能显示倒计时
预想的效果图:
这是微信公众平台上的代码
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实现点击按钮后,倒计时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代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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秒倒计时后才能继续可以点击,按钮上还能显示倒计时
预想的效果图:
这是微信公众平台上的代码
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程序设计有所帮助。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- js实现点击复制当前文本到剪贴板功能(兼容所有浏览器)
- jquery插件jquery.confirm弹出确认消息
- js实现仿微博滚动显示信息的效果
- Javascript实现Array和String互转换的方法
- 图解Sublime Text3使用技巧
- 七个不允许错过的jQuery小技巧
- jQuery焦点图插件SaySlide
- Flow之一个新的Javascript静态类型检查器
- jquery实现删除一个元素后面的所有元素功能
- 浅析JavaScript声明变量
- jQuery实现图片文字淡入淡出效果
- 深入浅析Node.js 事件循环
- JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
- 基于jQuery和CSS3制作响应式水平时间轴附源码下载
- jQuery mobile 移动web(4)
- 基于jQuery实现放大镜效果
- jQuery mobile 移动web(6)
- jquery mobile 移动web(5)
- js倒计时抢购实例