JavaScript实现短信倒计时60s

当需要在网页中添加短信验证码的时候,我们通常需要一个倒计时的功能,限制60秒内只允许重新获取一次验证码。下面是JavaScript实现短信倒计时60s的攻略。

1. 倒计时基础框架

我们先来搭建倒计时的基本框架,HTML代码如下:

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

需要注意的是,这里的按钮id为“btn”,可以根据实际情况修改。

接下来,我们在JavaScript中获取该元素,并倒计时,在倒计时结束后恢复按钮的状态。

var btn = document.getElementById("btn");
var countdown = 60;

function settime(obj) {
  if (countdown == 0) {
    obj.removeAttribute("disabled");
    obj.innerText = "获取验证码";
    countdown = 60;
    return;
  } else {
    obj.setAttribute("disabled", true);
    obj.innerText = "重新发送(" + countdown + ")";
    countdown--;
  }
  setTimeout(function () {
    settime(obj);
  }, 1000);
}

2. 添加点击事件

在点击按钮的时候,我们需要触发倒计时函数。因此,我们需要在JavaScript中添加一个点击事件:

btn.addEventListener("click", function () {
  settime(this);
});

示例1:完整代码

接下来是完整代码示例1:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>短信验证码倒计时</title>
</head>

<body>
  <button id="btn">获取验证码</button>
  <script>
    var btn = document.getElementById("btn");
    var countdown = 60;

    function settime(obj) {
      if (countdown == 0) {
        obj.removeAttribute("disabled");
        obj.innerText = "获取验证码";
        countdown = 60;
        return;
      } else {
        obj.setAttribute("disabled", true);
        obj.innerText = "重新发送(" + countdown + ")";
        countdown--;
      }
      setTimeout(function () {
        settime(obj);
      }, 1000);
    }

    btn.addEventListener("click", function () {
      settime(this);
    });
  </script>
</body>

</html>

示例2:jQuery实现

除了原生JavaScript,我们也可以使用jQuery实现短信验证码倒计时,如下:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>短信验证码倒计时</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>

<body>
  <button id="btn">获取验证码</button>
  <script>
    var countdown = 60;

    function settime(obj) {
      if (countdown == 0) {
        obj.removeAttr("disabled");
        obj.text("获取验证码");
        countdown = 60;
        return;
      } else {
        obj.attr("disabled", true);
        obj.text("重新发送(" + countdown + ")");
        countdown--;
      }
      setTimeout(function () {
        settime(obj);
      }, 1000);
    }

    $('#btn').click(function () {
      settime($(this));
    });
  </script>
</body>

</html>

需要注意的是,在使用jQuery之前,需要先引入jQuery库。通过与之前的原生JavaScript对比,可以发现,在使用jQuery实现倒计时的时候,只需要在选择器中传入字符串形式的id,即可选择按钮元素。另外,jQuery中的获取属性和设置属性分别使用“removeAttr”和“attr”函数,以及“text”函数用于设置对应的文本内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现短信倒计时60s - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 解放web程序员的输入验证

    解放Web程序员的输入验证是一项重要的任务,任何一个Web应用程序都需要正确输入验证以防止输入数据造成的不良影响。下面是一些实现完整Web应用程序输入验证的攻略: 1. 使用前端验证 当用户输入数据时,前端验证可以快速捕捉到错误并防止这些错误提交到服务器。例如,你可以使用Javascript验证用户名和密码字段是否符合要求,避免在提交表单后再次获取错误。 下…

    JavaScript 2023年6月10日
    00
  • js传参数受特殊字符影响错误的解决方法

    当使用JavaScript进行参数传递的时候,如果传递的参数中包含特殊字符,可能会出现错误。这种错误的解决方案可以通过对参数进行转义处理。 1. encodeURI() 和 decodeURI() 函数 使用encodeURI() 和 decodeURI() 函数可以对参数进行编码和解码。这两个函数都是全局对象的方法。 encodeURI()方法将一个字符串…

    JavaScript 2023年5月19日
    00
  • 浅谈typescript中keyof与typeof操作符用法

    当谈到TypeScript的类型系统时,我们经常听到keyof和typeof这两个操作符。这两个操作符的使用可以帮助我们更好地进行类型推断和类型检查。本文将详细讲解这两个操作符的用法以及它们在TypeScript中的常见应用。 keyof操作符 keyof操作符用于获取一个对象类型的所有键名,以联合类型的形式返回。它经常与泛型结合使用,可以在编译期进行类型检…

    JavaScript 2023年6月10日
    00
  • WinForm项目开发中WebBrowser用法实例汇总

    让我们来详细讲解一下“WinForm项目开发中WebBrowser用法实例汇总”的完整攻略吧。 标题 WinForm项目开发中WebBrowser用法实例汇总 正文 1. WebBrowser控件简介 WebBrowser控件是WinForms中用来显示网页的控件,它可以让我们在应用程序里直接嵌入一个浏览器,实现浏览网页的功能。WebBrowser控件使用I…

    JavaScript 2023年5月28日
    00
  • Javascript实现数组中的元素上下移动

    下面是“Javascript实现数组中的元素上下移动”的完整攻略: 1. 实现思路 首先需要获取要移动的元素和移动方向; 然后通过数组中splice方法实现元素位置的上移或下移; 最后需要对移动后的新数组进行操作。 2. 具体实现 2.1 上移元素 function arrayMoveUp(arr, index) { if (index == 0) { re…

    JavaScript 2023年5月27日
    00
  • JavaScript生成指定范围的时间列表

    下面我会就“JavaScript生成指定范围的时间列表”的完整攻略进行详细讲解,希望对您有所帮助。 1. 需求分析 在进行编程操作之前,我们首先需要对需求进行分析,弄清楚需要完成的具体目标。在这个需求中,我们需要实现如下功能: 生成指定范围的时间列表,以数组形式返回 可以指定时间间隔 包含起始时间和结束时间 2. 解决方案 有了需求之后,我们可以采用如下方式…

    JavaScript 2023年5月27日
    00
  • Three.js+React实现3D开放世界小游戏

    让我为您详细讲解“Three.js+React实现3D开放世界小游戏”的完整攻略。如下: 简介 Three.js是一个基于WebGL的JavaScript 3D库,提供了许多3D渲染的功能。React则是一个构建用户界面的JavaScript库,它可以使开发者更加方便地处理界面的状态和事件。 结合Three.js和React,我们可以实现一个3D开放世界小游…

    JavaScript 2023年6月11日
    00
  • vue-router的两种模式的区别

    Vue Router 是一个官方的 Vue.js 路由管理器,它可以将组件与标识符映射为路由,然后将其传递给 Vue.js 实例进行渲染,在 Vue Router 中主要有两种路由模式:hash 模式和 history 模式。 hash 模式 hash 模式就是将路由信息放在 url 中的 hash (#)中,这种模式下的 url 格式为: http://l…

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