js untuk melaksanakan kira detik 60 saat apabila mengklik kemahiran button_javascript

WBOY
Lepaskan: 2016-05-16 15:24:29
asal
2113 orang telah melayarinya

Sebagai contoh, fungsi pengesahan SMS pada sesetengah tapak web mempunyai kesan yang sama seperti selepas mengklik butang, ia akan mengira detik selama 60 saat sebelum mengklik hantar semula.

Contoh ini menggunakan Javascript untuk melaksanakan fungsi mengira mundur selama 60 saat sebelum mengklik butang sekali lagi untuk menghantar kod pengesahan selepas mengklik butang.

Contoh 1: Javascript melaksanakan kesan mengklik butang dan mengira detik selama 60 saat sebelum mengklik sekali lagi untuk menghantar

<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>
Salin selepas log masuk

Contoh 2: Klik butang untuk memaparkan kod js kira detik 60 saat

<!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>
Salin selepas log masuk

Contoh 3: Selepas mengklik butang, anda boleh terus mengkliknya selepas kira detik 60 saat juga boleh dipaparkan pada butang

Paparan yang dijangkakan:

Ini ialah kod pada platform awam WeChat

function E() {
var e = $("#mobile"), t = (new Date).getTime(), n = Math.floor((t - b) / 1e3);
g && clearTimeout(g), n >= 60 &#63; (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) &#63; 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 &#63; "/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;
}
}));
});
}
Salin selepas log masuk

Editor hanya tidak tahu cara memanggil kod ini ke dalam kodnya sendiri Selepas beberapa bimbingan daripada pakar, dia menghasilkan beberapa petunjuk.

Idea penyelesaian masalah pakar: Jika ia ketat, ini harus digabungkan dengan masa pemerolehan latar belakang, jika tidak, orang lain boleh memuat semulanya.
Jika tidak ketat, anda juga boleh menggunakan kuki.

<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>
Salin selepas log masuk

Jika anda mempunyai sebarang idea melalui tiga contoh ini, mari kita laksanakannya, saya harap ia akan membantu semua orang dalam mempelajari pengaturcaraan javascript.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!