获取验证码 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代码
  • 实际项目中建议将倒计时状态保存在服务端,防止页面刷新后状态丢失
  • 移动端开发时需要考虑点击区域的适当扩大

分享给朋友:

相关文章

uniapp图形验证码

uniapp图形验证码

uniapp 图形验证码实现方法 在 uniapp 中实现图形验证码功能可以通过多种方式完成,以下是几种常见的实现方案: 使用第三方验证码服务 接入第三方验证码服务如极验、腾讯云验证码等,这些服务通…

php实现倒计时

php实现倒计时

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

php登录验证码实现

php登录验证码实现

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

php实现图形验证码

php实现图形验证码

生成随机验证码字符串 使用rand()或mt_rand()函数生成随机数字,或结合chr()函数生成随机字母。验证码长度通常为4-6位: $length = 4; $code = ''; $char…

php如何实现验证码

php如何实现验证码

生成验证码图片 使用 PHP 的 GD 库创建验证码图片。通过 imagecreatetruecolor() 函数创建一个空白画布,设置背景色和文本颜色。利用 imagestring() 或 imag…

js实现登录验证码

js实现登录验证码

实现登录验证码的步骤 生成随机验证码 使用JavaScript生成随机验证码字符串,通常包含数字和字母组合。可以定义一个函数来生成指定长度的验证码: function generateCaptcha…