当前位置:首页 > JavaScript

js实现验证码倒计时

2026-01-30 20:47:38JavaScript

实现验证码倒计时功能

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

获取验证码按钮

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

<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实现验证码倒计时

分享给朋友:

相关文章

vue实现倒计时组件

vue实现倒计时组件

Vue 倒计时组件实现 核心思路 通过 setInterval 或 setTimeout 实现时间递减,结合 Vue 的响应式数据更新 UI。需注意组件销毁时清除定时器。 基础实现方案 模板部分…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

js 实现验证码

js 实现验证码

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

jquery 验证码

jquery 验证码

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

vue倒计时实现

vue倒计时实现

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