当前位置:首页 > 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. 移动端适配时可能需要调整按钮样式和大小

分享给朋友:

相关文章

uniapp倒计时组件

uniapp倒计时组件

uniapp倒计时组件实现方法 使用内置组件实现 uniapp提供了<countdown>组件用于倒计时功能,支持自定义格式和样式。示例代码如下: <countdown…

jquery验证码

jquery验证码

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

vue倒计时实现

vue倒计时实现

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

php验证码实现原理

php验证码实现原理

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

php实现图片验证码

php实现图片验证码

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

php实现验证码注册

php实现验证码注册

生成验证码图片 使用 PHP 的 GD 库生成验证码图片,创建一个包含随机字符的图像。以下代码示例生成一个 4 位数字验证码: session_start(); $width = 120; $hei…