当前位置:首页 > JavaScript

js实现验证码倒计时

2026-03-01 11:52:17JavaScript

js实现验证码倒计时

实现验证码倒计时功能

验证码倒计时功能通常用于限制用户频繁获取验证码,提升用户体验。以下是使用JavaScript实现验证码倒计时的完整方案:

基本实现代码

let countdown = 60;
let timer = null;

function startCountdown(button) {
  button.disabled = true;
  timer = setInterval(() => {
    countdown--;
    button.textContent = `${countdown}秒后重新获取`;

    if (countdown <= 0) {
      clearInterval(timer);
      button.disabled = false;
      button.textContent = '获取验证码';
      countdown = 60;
    }
  }, 1000);
}

// HTML中调用示例
// <button onclick="startCountdown(this)">获取验证码</button>

优化版本(防止重复点击)

function startCountdown(button) {
  if (button.disabled) return;

  let countdown = 60;
  button.disabled = true;

  const timer = setInterval(() => {
    button.textContent = `重新获取(${countdown}s)`;
    countdown--;

    if (countdown < 0) {
      clearInterval(timer);
      button.disabled = false;
      button.textContent = '获取验证码';
    }
  }, 1000);
}

带样式版本

<style>
  .countdown-btn {
    padding: 8px 15px;
    background: #1890ff;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  }
  .countdown-btn:disabled {
    background: #ccc;
    cursor: not-allowed;
  }
</style>

<button class="countdown-btn" onclick="startCountdown(this)">获取验证码</button>

使用Promise封装

function startCountdown(button, seconds = 60) {
  return new Promise((resolve) => {
    button.disabled = true;
    let remaining = seconds;

    const timer = setInterval(() => {
      button.textContent = `${remaining}秒后重试`;
      remaining--;

      if (remaining < 0) {
        clearInterval(timer);
        button.disabled = false;
        button.textContent = '获取验证码';
        resolve();
      }
    }, 1000);
  });
}

// 调用示例
document.getElementById('verify-btn').addEventListener('click', async function() {
  await startCountdown(this);
  // 倒计时结束后执行的操作
});

注意事项

  • 确保在页面卸载时清除定时器,防止内存泄漏
  • 移动端需要考虑触摸反馈和禁用状态样式
  • 实际项目中建议将倒计时状态保存在服务端,防止客户端篡改

以上实现方案可以根据实际项目需求进行组合和调整,核心逻辑是通过setInterval实现时间递减并更新UI显示。

js实现验证码倒计时

分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas…

php实现获取验证码

php实现获取验证码

使用GD库生成验证码 在PHP中,可以通过GD库来生成验证码图片。以下是一个简单的实现示例: <?php session_start(); $width = 120; $height = 40…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…

react验证码实现

react验证码实现

验证码生成与验证 在React中实现验证码功能通常涉及生成随机验证码字符串、渲染为图像或文本,并与用户输入进行比对。以下是具体实现方法: 生成随机验证码 使用JavaScript生成随机字符串作…

php实现倒计时

php实现倒计时

PHP实现倒计时的方法 PHP可以通过多种方式实现倒计时功能,以下是一些常见的方法: 使用JavaScript与PHP结合 PHP本身是服务器端语言,倒计时通常需要客户端JavaScript配合。P…