js实现验证码倒计时效果

yizhihongxing

JS实现验证码倒计时效果

在注册、登录等过程中,我们常常需要输入验证码以确保账户安全。而验证码通常会有一个倒计时,如果不再规定的时间内完成输入,则验证码失效。本文将介绍如何利用JavaScript实现验证码倒计时效果。

创建HTML结构

首先我们需要创建一个HTML结构,这里我们创建一个简单的表单,其中包含手机号、验证码以及发送验证码的按钮。

<form>
  <label for="phone">手机号:</label>
  <input type="text" id="phone" name="phone">
  <br>
  <label for="code">验证码:</label>
  <input type="text" id="code" name="code">
  <button type="button" id="sendCode">发送验证码</button>
</form>

编写JavaScript代码

接着我们编写JavaScript代码,实现发送验证码并倒计时的功能。

// 获取DOM元素
var phoneInput = document.getElementById('phone')
var codeInput = document.getElementById('code')
var sendCodeBtn = document.getElementById('sendCode')

// 定义倒计时时间
var countdownTime = 60

// 发送验证码函数
function sendCode() {
  // 判断手机号是否合法,这里简单处理,只判断是否为11位数字
  if (phoneInput.value && /^\d{11}$/.test(phoneInput.value)) {
    // 模拟发送验证码的过程,这里用了setTimeout实现
    setTimeout(function () {
      // 发送成功后禁用发送按钮并开始倒计时
      sendCodeBtn.disabled = true
      countdown()
    }, 1000)
  }
}

// 倒计时函数
function countdown() {
  // 更新发送按钮的文本和样式
  sendCodeBtn.textContent = countdownTime + '秒后重新发送'
  sendCodeBtn.style.backgroundColor = '#ccc'

  if (countdownTime > 0) {
    // 当倒计时未结束时,继续倒计时
    countdownTime--
    setTimeout(countdown, 1000)
  } else {
    // 当倒计时结束时,恢复发送按钮的文本和样式
    sendCodeBtn.textContent = '发送验证码'
    sendCodeBtn.style.backgroundColor = ''
    sendCodeBtn.disabled = false
    countdownTime = 60
  }
}

// 监听发送按钮的点击事件,调用发送验证码函数
sendCodeBtn.addEventListener('click', sendCode)

总结

以上便是实现验证码倒计时效果的完整代码。通过编写JavaScript代码,我们实现了发送验证码、倒计时,并且在倒计时结束时恢复发送按钮的状态。这样我们就可以为用户提供更加便捷的账户验证操作了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现验证码倒计时效果 - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • sqlserver数据库distinct的用法

    当然,我很乐意为您提供有关“SQL Server数据库DISTINCT的用法”的完整攻略。以下是详细的步骤和两个示例: 1 SQL Server数据库DISTINCT的用法 在SQL Server数据库中,DISTINCT是一种用于去除重复值的关键字。它可以用于SELECT语句中,以便只返回不同的值。 2 使用DISTINCT关键字 以下是使用DISTINC…

    other 2023年5月6日
    00
  • Golang创建构造函数的方法超详细讲解

    Golang创建构造函数的方法 在Golang中,构造函数用于初始化一个struct类型并返回该类型的指针,这里我们介绍两种不同的Golang创建构造函数的方法。 方法一:函数调用 定义一个结构体Person: type Person struct { Name string Age int } 然后定义一个函数 NewPerson() 作为结构体的构造函数…

    other 2023年6月26日
    00
  • Android视图控件架构分析之View、ViewGroup

    Android视图控件架构分析之View、ViewGroup 1. View View 是 Android 中所有用户界面的基本单元。它代表屏幕上的一个矩形区域,能够处理用户的交互事件。View 是所有控件的基类,包括像 Button、TextView、EditText 等常见控件都继承自 View。 1.1 View 的绘制过程 View 的绘制过程是 A…

    other 2023年6月26日
    00
  • 如何在CentOS8上安装和配置Postfix邮件服务器的方法示例

    下面是如何在CentOS 8上安装和配置Postfix邮件服务器的方法示例: 安装Postfix 在CentOS 8上安装Postfix非常简单,只需要运行以下命令即可: sudo dnf install postfix 配置Postfix 安装完Postfix后,需要进行一些配置才能使其正常工作。下面是一个基本的Postfix配置示例: 修改主机名称 在/…

    other 2023年6月27日
    00
  • 图解苹果笔记本电脑IP地址配置的过程

    图解苹果笔记本电脑IP地址配置的过程 苹果笔记本电脑的IP地址配置过程可以通过以下步骤进行。在这个过程中,我们将使用两个示例来说明。 步骤1:打开网络设置 首先,打开苹果笔记本电脑的“系统偏好设置”。你可以通过点击屏幕左上角的苹果图标,然后选择“系统偏好设置”来打开。 步骤2:选择网络 在系统偏好设置窗口中,找到并点击“网络”选项。这将打开网络设置界面。 步…

    other 2023年7月30日
    00
  • RestTemplate如何通过HTTP Basic Auth认证示例说明

    当我们需要通过HTTP Basic Auth的方式对某个API进行认证时,可以使用Spring的RestTemplate来发送HTTP请求,下面是使用RestTemplate进行HTTP Basic Auth认证的完整攻略。 第一步:创建RestTemplate对象 首先,我们需要创建一个RestTemplate对象,可以通过以下方式。 RestTempla…

    other 2023年6月27日
    00
  • 说说@ModelAttribute在父类和子类中的执行顺序

    在Spring MVC中,@ModelAttribute注解主要用来在controller方法执行之前,将指定的对象添加到model中,以便在页面中使用。当在父类和子类中同时使用@ModelAttribute注解时,其执行顺序是有所区别的,下面是具体的讲解: @ModelAttribute在父类和子类中的执行顺序 当在父类和子类中都有@ModelAttrib…

    other 2023年6月26日
    00
  • 华为mate20 pro怎么卸载应用?华为mate20 pro删除应用程序教程

    以下是华为mate20 pro卸载应用的完整攻略,包含详细的步骤: 1. 打开应用管理器 在华为mate20 pro中,卸载应用的方法是通过应用管理器来进行的。因此,首先需要打开应用管理器。 你可以通过以下两种方法来打开应用管理器: 在主屏幕上,长按任何一个应用程序,等待出现应用选项,然后选择“应用管理器”。 或者,在主屏幕上,打开应用抽屉,找到并打开“设置…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部