获取验证码 JavaScript 部分 let countdo…">
当前位置:首页 > JavaScript

js实现验证码倒计时

2026-04-04 12:37:26JavaScript

实现验证码倒计时功能

HTML 部分

<button id="sendCodeBtn">获取验证码</button>

JavaScript 部分

js实现验证码倒计时

let countdown = 60;
const sendCodeBtn = document.getElementById('sendCodeBtn');

function startCountdown() {
    sendCodeBtn.disabled = true;
    sendCodeBtn.textContent = `${countdown}秒后重新获取`;

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

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

sendCodeBtn.addEventListener('click', startCountdown);

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

let countdown = 60;
let isCounting = false;
const sendCodeBtn = document.getElementById('sendCodeBtn');

function startCountdown() {
    if (isCounting) return;

    isCounting = true;
    sendCodeBtn.disabled = true;
    sendCodeBtn.textContent = `${countdown}秒后重新获取`;

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

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

sendCodeBtn.addEventListener('click', startCountdown);

封装为可复用函数

function createCountdown(btnId, duration = 60) {
    const btn = document.getElementById(btnId);
    let countdown = duration;
    let isCounting = false;
    const originalText = btn.textContent;

    function start() {
        if (isCounting) return;

        isCounting = true;
        btn.disabled = true;
        btn.textContent = `${countdown}秒后重新获取`;

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

            if (countdown <= 0) {
                clearInterval(timer);
                btn.disabled = false;
                btn.textContent = originalText;
                countdown = duration;
                isCounting = false;
            }
        }, 1000);
    }

    btn.addEventListener('click', start);
}

// 使用示例
createCountdown('sendCodeBtn', 60);

注意事项

  • 确保按钮元素在DOM加载完成后才执行JavaScript代码
  • 实际项目中建议将倒计时状态保存在服务端,防止页面刷新后状态丢失
  • 移动端开发时需要考虑点击区域的适当扩大

分享给朋友:

相关文章

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php登录验证码实现

php登录验证码实现

验证码生成与显示 使用PHP的GD库生成验证码图片,并将验证码字符串存入Session以便后续验证。以下是一个基础实现示例: // 生成验证码 session_start(); $width = 1…

php验证码实现原理

php验证码实现原理

PHP验证码实现原理 验证码(CAPTCHA)用于区分人类用户和自动化程序,防止恶意攻击。PHP实现验证码通常涉及生成随机字符串、创建图像、干扰元素添加和会话存储。 生成随机字符串 使用PHP的随机…

php实现图片验证码

php实现图片验证码

生成随机验证码字符串 使用PHP的rand()或mt_rand()函数生成随机数,并通过字符串拼接形成验证码。常见做法是混合数字和字母: $chars = 'ABCDEFGHJKLMNPQRSTUV…

js如何实现验证码

js如何实现验证码

生成验证码 使用Math.random()生成随机数,转换为字符串后截取指定位数。例如生成4位数字验证码: const code = Math.floor(Math.random() * 9000)…

js实现倒计时页面跳转

js实现倒计时页面跳转

实现倒计时页面跳转的方法 使用JavaScript实现倒计时并在倒计时结束后自动跳转页面,可以通过以下方法完成: 设置倒计时变量和显示 let countdown = 5; // 倒计时5秒 co…