当前位置:首页 > JavaScript

js实现验证码倒计时

2026-01-30 20:47:38JavaScript

实现验证码倒计时功能

验证码倒计时功能通常用于防止用户频繁发送验证码请求。以下是使用JavaScript实现验证码倒计时的方法。

js实现验证码倒计时

获取验证码按钮

在HTML中添加一个按钮用于触发验证码发送:

js实现验证码倒计时

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

倒计时逻辑实现

// 获取按钮元素
const getCodeBtn = document.getElementById('getCodeBtn');

// 倒计时函数
function startCountdown(seconds) {
    let remaining = seconds;

    // 禁用按钮
    getCodeBtn.disabled = true;
    getCodeBtn.textContent = `${remaining}秒后重新获取`;

    // 设置定时器
    const timer = setInterval(() => {
        remaining--;

        if (remaining <= 0) {
            // 倒计时结束
            clearInterval(timer);
            getCodeBtn.disabled = false;
            getCodeBtn.textContent = '获取验证码';
        } else {
            // 更新按钮文字
            getCodeBtn.textContent = `${remaining}秒后重新获取`;
        }
    }, 1000);
}

// 绑定点击事件
getCodeBtn.addEventListener('click', () => {
    // 这里应该添加发送验证码的逻辑
    // 发送成功后开始倒计时
    startCountdown(60); // 60秒倒计时
});

样式优化

可以为禁用状态的按钮添加CSS样式,提升用户体验:

#getCodeBtn:disabled {
    background-color: #cccccc;
    cursor: not-allowed;
}

完整示例

<!DOCTYPE html>
<html>
<head>
    <style>
        #getCodeBtn {
            padding: 10px 15px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }

        #getCodeBtn:disabled {
            background-color: #cccccc;
            cursor: not-allowed;
        }
    </style>
</head>
<body>
    <button id="getCodeBtn">获取验证码</button>

    <script>
        const getCodeBtn = document.getElementById('getCodeBtn');

        function startCountdown(seconds) {
            let remaining = seconds;
            getCodeBtn.disabled = true;
            getCodeBtn.textContent = `${remaining}秒后重新获取`;

            const timer = setInterval(() => {
                remaining--;

                if (remaining <= 0) {
                    clearInterval(timer);
                    getCodeBtn.disabled = false;
                    getCodeBtn.textContent = '获取验证码';
                } else {
                    getCodeBtn.textContent = `${remaining}秒后重新获取`;
                }
            }, 1000);
        }

        getCodeBtn.addEventListener('click', () => {
            // 这里添加发送验证码的AJAX请求
            console.log('验证码已发送');
            startCountdown(60);
        });
    </script>
</body>
</html>

注意事项

  1. 实际应用中应该在发送验证码请求成功后再启动倒计时
  2. 可以添加防止重复点击的逻辑
  3. 考虑页面刷新时保持倒计时状态(需要使用localStorage)
  4. 移动端适配时可能需要调整按钮样式和大小

分享给朋友:

相关文章

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

jquery验证码

jquery验证码

jQuery 验证码实现方法 验证码(CAPTCHA)用于防止自动化脚本提交表单。jQuery 可以与后端结合实现验证码功能。 前端生成和验证 使用 jQuery 生成简单的验证码: // 生成随…

jquery 验证码

jquery 验证码

jQuery 验证码实现方法 使用 jQuery 实现验证码功能可以通过多种方式完成,包括生成图形验证码、短信验证码或简单的逻辑验证码。以下是几种常见的实现方法: 图形验证码生成 图形验证码通常结合…

vue倒计时实现

vue倒计时实现

Vue 倒计时实现方法 使用 setInterval 基础实现 在 Vue 组件中,通过 data 定义倒计时初始值,使用 setInterval 实现倒计时逻辑,并在组件销毁时清除定时器。…

php实现倒计时

php实现倒计时

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

php登录验证码实现

php登录验证码实现

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