JavaScript与jQuery实现注册协议倒计时功能的三种方案

作者:异步漫步

时间:2026-10-23

浏览:212

本文详细解析了实现用户注册协议倒计时的三种常见技术路径。涵盖原生JavaScript通过setTimeout或setInterval控制按钮状态,以及利用jQuery简化DOM操作与事件绑定的两种实现方式。内容包含完整代码示例、运行效果对比及关键参数说明,帮助开发者快速掌握前端交互逻辑。

文章目录

注册协议倒计时功能概述

本文通过具体实例,详细讲解了如何利用JavaScript和jQuery技术实现用户注册协议页面的倒计时功能。该功能旨在确保用户在提交注册前阅读相关条款,通过禁用“同意”按钮直至倒计时结束来强制交互。以下提供三种不同的实现方案供开发者参考与选用。

方法一:原生JavaScript实现

第一种方法采用原生JavaScript实现,核心逻辑是通过定时器控制按钮的禁用与启用状态。


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>www.jb51.net 注册倒计时</title>
  <script type="text/javascript">
    //用户有十秒钟的时间看协议,超过十秒钟,“同意”按钮将生效
    var Seconds = 10;
    //计时器ID
    var setIntervalID;
    function ok() {
      var getid = document.getElementById("but");
      if (Seconds <= 0) {
        getid.value="同意";
        getid.disabled = false; //或者写成getid.disabled=""; 启用getid控件。
        //停止计时器
        clearInterval(setIntervalID);
      }
      else {
        getid.value = "请仔细阅读协议还剩下【" + Seconds + "】秒";
      }
      Seconds--;
    }
   setIntervalID=setInterval("ok()", 1000);
  </script>
</head>
<body>
<textarea cols="20" rows="8"></textarea><br />
<!--disabled="disabled" 默认submit表单是禁用的,也就是只读的,不能点击-->
<input type="submit" id ="but" value="同意" disabled="disabled" />
</body>
</html>

该方法的具体运行效果如下所示,展示了倒计时期间按钮的禁用状态及倒计时结束后的激活过程。

注册协议倒计时功能概述

方法二:jQuery封装实现

第二种方法基于jQuery库进行封装,利用其简洁的选择器与事件处理机制简化代码结构。


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>www.jb51.net 注册倒计时</title>
  <script src="jquery-1.7.2.min.js"></script>
</head>
<body>
  <form action="https://www.jb51.net/" method="post" name="agree">
    <input type="submit" class="button" value="" name="agreeb">
  </form>
</body>
</html>
<script>
  var secs = 5;
  var si;
  $(function () {
    $(".button").attr("disabled", "disabled");
    $(".button").val("请认真查看<服务条款和声明>(" + secs + ")")
    si = setInterval(a, 1000);
  })
  function a() {
    $(".button").val("请认真查看<服务条款和声明>(" + (secs-1) + ")");
    if (secs == 0) {
      clearInterval(si);
      $(".button").val("我同意" ).removeAttr("disabled");
    }
    secs--;
  }
</script>

第二种方法的实际运行效果如图所示,重点展示了jQuery环境下倒计时与按钮文本的动态更新。

注册协议倒计时功能概述

方法三:另一种原生JS实现

第三种方法同样使用原生JavaScript,但在定时器调用与DOM操作细节上与前两种有所区别,提供了另一种实现思路。


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>www.jb51.net 注册倒计时</title>
</head>
<body>
  <form action="https://www.jb51.net/" method="post" name="agree">
    <input type="submit" class="button" value="请认真查看<服务条款和声明> (30)" name="agreeb">
  </form>
</body>
</html>
<script>
  var secs = 30;
  document.agree.agreeb.disabled = true;
  for (var i = 1; i <= secs; i++) {
    window.setTimeout("update(" + i + ")", i * 1000);
  }
  function update(num) {
    if (num == secs) {
      document.agree.agreeb.value = " 我 同 意 ";
      document.agree.agreeb.disabled = false;
    }
    else {
      var printnr = secs - num;
      document.agree.agreeb.value = "请认真查看<服务条款和声明> (" + printnr + ")";
    }
  }
</script>

第三种方法的运行效果如截图所示,验证了其在不同场景下的兼容性与稳定性。

注册协议倒计时功能概述

相关开发工具推荐

此外,本文还推荐几款实用的时间与日期处理在线工具,供开发者在相关开发场景中辅助使用:

在线秒表工具: http://tools.jb51.net/bianmin/miaobiao

在线日期/天数计算器: http://tools.jb51.net/jisuanqi/date_jisuanqi

在线日期天数差计算器: http://tools.jb51.net/jisuanqi/onlinedatejsq

Unix时间戳(timestamp)转换工具: http://tools.jb51.net/code/unixtime

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript时间与日期操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述的三种实现方案及工具推荐,能对从事JavaScript程序设计的开发者提供实质性的帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章