js pour obtenir un compte à rebours de 60 secondes lorsque le bouton est cliqué

Par exemple, la fonction d'authentification SMS du téléphone mobile sur certains sites Web a un effet similaire après avoir cliqué sur le bouton, elle compte à rebours jusqu'à 60 secondes avant de cliquer à nouveau sur l'envoi.

Cet exemple utilise Javascript pour réaliser la fonction d'envoi du code de vérification après un compte à rebours de 60 secondes après avoir cliqué sur le bouton.

Exemple 1: Javascript réalise l'effet du compte à rebours de 60 secondes pour cliquer sur le bouton avant de pouvoir cliquer pour envoyer à nouveau

<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>

Exemple 2: Cliquez sur le bouton pour afficher un code js de compte à rebours de 60 secondes

<!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>

Exemple 3: Après avoir cliqué sur le bouton, il peut continuer à être cliqué après un compte à rebours de 60 secondes, et le compte à rebours peut être affiché sur le bouton

Rendus attendus:

Ceci est le code sur la plateforme publique WeChat

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;
}
}));
});
}

L'éditeur de ce code ne sait tout simplement pas comment l'appeler dans mon propre code.Après avoir été invité par un expert, j'ai un peu de tête.

Idée d'expert sur la résolution de problèmes: si elle est stricte, elle doit également être combinée avec l'arrière-plan pour obtenir du temps, ou d'autres peuvent le rafraîchir.
                            S'il n'est pas strict, un cookie peut également être utilisé.

<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>

Pour plus d'articles sur le compte à rebours, veuillez consulter le sujet:  "Fonction de compte à rebours"

Je suppose que tu aimes

Origine blog.csdn.net/qq_41071754/article/details/110238586
conseillé
Classement