您的位置:

JavaScript验证码倒计时

一、JS验证码倒计时60秒

在很多场景下,页面需要发送短信或者验证码验证用户的身份,但是过于频繁发送一方面会影响用户体验,另一方面也容易让网站受到攻击,所以使用倒计时进行控制是非常必要的。下面的代码演示了如何使用JavaScript实现一个60秒的验证码倒计时:


let time = 60; //倒计时时间
function countdown() {
  let btn = document.getElementById('btn');
  if (time == 0) {
    btn.disabled = false;
    btn.innerHTML = "获取验证码";
    time = 60;
    return;
  } else {
    btn.disabled = true;
    btn.innerHTML = "重新发送(" + time + ")";
    time--;
  }
  setTimeout(function() {
    countdown()
  }, 1000);
}

在上面的代码中,我们定义了一个变量time来记录倒计时时间,初始值为60。当用户点击获取验证码时,按钮会变为不可用状态,同时按钮显示的文字将变为“重新发送(60)”,其中的时间值是从time变量中获取。倒计时的功能通过setTimeout()函数实现,每隔1秒钟会执行一次countdown()函数,直到倒计时结束。

二、JS发送验证码倒计时

很多时候,在用户填写完手机号码并点击按钮发送验证码之后,才开始进行倒计时。下面这段代码演示了如何在点击发送按钮的时候开始倒计时:


let time = 60;
function countdown() {
  let btn = document.getElementById('btn');
  if (time == 0) {
    btn.disabled = false;
    btn.innerHTML = "获取验证码";
    time = 60;
    return;
  } else {
    btn.disabled = true;
    btn.innerHTML = "重新发送(" + time + ")";
    time--;
  }
  setTimeout(function() {
    countdown()
  }, 1000);
}
document.getElementById('sendBtn').addEventListener('click', function() {
  countdown();
});

在代码中,我们为发送按钮绑定了一个click事件,点击按钮会执行countdown()函数开始倒计时。当倒计时结束的时候,按钮将重新变为可用状态,并且按钮文字变为“获取验证码”。

三、JS验证码倒计时代码

下面的代码提供了一种更加通用的方法来实现验证码倒计时,通过传递参数来实现不同时间的倒计时。还可以添加回调函数进行更加灵活的操作:


function countdown(time, btnId, callback) {
  let btn = document.getElementById(btnId);
  btn.disabled = true;
  btn.innerHTML = "重新发送(" + time + ")";
  let timer = setInterval(function() {
    time--;
    btn.innerHTML = "重新发送(" + time + ")";
    if (time == 0) {
      clearInterval(timer);
      btn.disabled = false;
      btn.innerHTML = "获取验证码";
      if (callback) {
        callback();
      }
    }
  }, 1000);
}

在上述的代码中,我们定义了一个countdown()函数,它接收三个参数,分别是倒计时时间、按钮的ID和用于清除倒计时的回调函数。当函数被调用时,按钮会变为不可用状态,并且文字显示为“重新发送(60)”,每隔1秒钟会更新一次时间。当倒计时结束时,按钮会重新变为可用状态,并且文字会变为“获取验证码”,如果传递了回调函数,就会执行回调函数。

四、JS验证码倒计时60秒

下面这段代码提供了另一种实现60秒验证码倒计时的方法,它通过使用setInterval()函数来实现,并且可以在倒计时结束时重置时间:


let time = 60;
let timer = null;
function countdown() {
  let btn = document.getElementById('btn');
  btn.disabled = true;
  timer = setInterval(function() {
    if (time <= 0) {
      clearInterval(timer);
      btn.disabled = false;
      btn.innerHTML = "获取验证码";
      time = 60;
    } else {
      btn.innerHTML = "重新发送(" + time + "s)";
      time--;
    }
  }, 1000);
}

在上述代码中,我们创建了一个变量来记录倒计时时间,初始值为60秒。在countdown()函数中,我们通过setInterval()函数每秒更新一次时间,当倒计时结束时,清除计时器,按钮恢复为可用状态,并且倒计时时间变为60秒。

五、JS获取验证码倒计时

下面这段代码提供了一种获取验证码倒计时的实现方法,通过ajax获取验证码之后开始倒计时:


function getCode() {
  $.ajax({
    type: 'POST',
    url: '/getCode',
    data: {
      phoneNum: $('#phone').val()
    },
    success: function(data) {
      if (data.code == 200) {
        $('#getCode').attr('disabled', true);
        $('#getCode').html('重新发送(60s)');
        var time = 60;
        var countdown = setInterval(function() {
          time--;
          $('#getCode').html('重新发送(' + time + 's)');
          if (time <= 0) {
            clearInterval(countdown);
            $('#getCode').html('获取验证码');
            $('#getCode').attr('disabled', false);
          }
        }, 1000);
      } else {
        alert('验证码获取失败');
      }
    }
  });
}

上述代码中,在点击获取验证码按钮之后,通过ajax向后台请求验证码,获取成功后开始倒计时。在倒计时过程中,按钮会变为不可用状态,倒计时结束之后按钮会重新变为可用状态,按钮文字变为“获取验证码”。

六、JS短信验证码倒计时

下面这段代码提供了一种短信验证码倒计时的实现方法,通过使用cookie来保存倒计时开始的时间和结束的时间,每次刷新页面都会自动进行倒计时:


function setBtnText(time) {
  $('#getCode').html(time + '秒后重新发送');
  $('#getCode').addClass('re-get');
  setTimeout(function() {
    $('#getCode').html('获取验证码');
    $('#getCode').removeClass('re-get');
  }, time * 1000);
}

function timer(btn) {
  var time = getCookie(btn);
  if (time && (new Date().getTime() - time.start) < (time.seconds * 1000)) {
    setBtnText(Math.floor((time.seconds * 1000 - (new Date().getTime() - time.start)) / 1000));
    var timer = setInterval(function() {
      if ((new Date().getTime() - time.start) >= (time.seconds * 1000)) {
        clearInterval(timer);
        setCookie(btn, '', -1);
      } else {
        setBtnText(Math.floor((time.seconds * 1000 - (new Date().getTime() - time.start)) / 1000));
      }
    }, 1000);
  } else {
    setBtnText(60);
  }
}

$('#getCode').on('click', function() {
  if (!$(this).hasClass('re-get')) {
    setCookie('getCodeBtn', {
      seconds: 60,
      start: new Date().getTime()
    }, 60);
    timer('getCodeBtn');
  }
});

function setCookie(cname, cvalue, seconds) {
  var d = new Date();
  d.setTime(d.getTime() + (seconds * 1000));
  var expires = "expires=" + d.toGMTString();
  document.cookie = cname + "=" + encodeURIComponent(JSON.stringify(cvalue)) + ";path=/;expires=" + expires;
}

function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') c = c.substring(1);
    if (c.indexOf(name) == 0) {
      var value = c.substring(name.length, c.length);
      return JSON.parse(decodeURIComponent(value));
    }
  }
  return "";
}

在上述代码中,我们将倒计时开始的时间和倒计时结束的时间通过cookie来保存。当点击获取验证码按钮之后,如果没有进行倒计时则开始进行倒计时,如果已经进行了倒计时,则从cookie中读取开始时间和结束时间进行继续倒计时。在倒计时过程中,按钮会变为不可用状态,倒计时结束之后按钮会重新变为可用状态,按钮文字变为“获取验证码”。

JavaScript验证码倒计时

2023-05-18
如何设计滑动验证码倒计时,提升用户注册体验

2023-05-19
Vue获取验证码倒计时60秒按钮详解

2023-05-20
Vue获取验证码倒计时60秒按钮详解

2023-05-20
倒计时js源码(web倒计时代码)

本文目录一览: 1、求一个倒计时js代码,非常简单的 2、帮忙改一个js倒计时代码 3、js倒计时(距离结束还有多少时间)的代码分享 4、JS 5秒倒计时的代码怎么写?时间要实时显示在屏幕上的。 求一

2023-12-08
php动态倒计时,php倒计时代码

2022-12-02
java方法整理笔记(java总结)

2022-11-08
一个倒计时的js代码(一个倒计时的js代码是多少)

本文目录一览: 1、用js写倒计时~但规定要用以下代码~求助 2、JS 5秒倒计时的代码怎么写?时间要实时显示在屏幕上的。 3、帮忙改一个js倒计时代码 4、倒计时 js 5、求一个倒计时js代码,非

2023-12-08
分享一个js倒计时代码,js写一个倒计时

本文目录一览: 1、JS 5秒倒计时的代码怎么写?时间要实时显示在屏幕上的。 2、点击按钮出现60秒倒计时的简单js代码(推荐) 3、求一个倒计时js代码,非常简单的 4、Js倒计时代码精确到毫秒。

2023-12-08
js倒计时代码按钮,js倒计时10秒按钮

本文目录一览: 1、点击按钮出现60秒倒计时的简单js代码(推荐) 2、JS 倒计时实现代码(时、分,秒) 3、网页点击按钮开始一小时倒计时的JavaScript代码 点击按钮出现60秒倒计时的简单j

2023-12-08
简单的倒计时js实现代码,js倒计时三种简单实现方式

本文目录一览: 1、JS 5秒倒计时的代码怎么写?时间要实时显示在屏幕上的。 2、求一个倒计时js代码,非常简单的 3、用js写倒计时~但规定要用以下代码~求助 JS 5秒倒计时的代码怎么写?时间要实

2023-12-08
php输出倒计时显示(php倒计时10秒)

2022-11-09
Vue倒计时组件详解

2023-05-17
python基础学习整理笔记,Python课堂笔记

2022-11-21
关于javascript春节倒计时的信息

2022-11-17
jsp时间倒计时代码(js日期倒计时)

本文目录一览: 1、纯jsp实现的倒计时动态显示效果完整代码 2、jsp 时间倒计时 3、jsp倒计时代码 4、JSP倒计时代码问题? 5、怎么在jsp做一个倒计时? 纯jsp实现的倒计时动态显示效果

2023-12-08
javascript简要笔记,JavaScript读书笔记

2022-11-17
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
python基础笔记整理(python基础教程总结)

2022-11-12
java学习笔记(java初学笔记)

2022-11-14