js设置按钮一段时间内不能重复点击的实现

发布于 2022-10-15 09:02:05 字数 6536 浏览 20 评论 0

转:杨锐-->天柱山  

js设置按钮一段时间内不能重复点击的实现



下面是我在工作中遇到的一个问题,也成功的解决了,贴出来分享下,希望大家提出宝贵的建议。

问题提出:

为了防止传真发送接口的堵塞,程序要求传真发送按钮每过5分钟才能点击一次。即使关闭当前页面甚至浏览器,再重新打开,仍然能够判断,并做出读秒倒计时提示。

效果图:

1.jpg (3.03 KB, 下载次数: 3)

下载附件

2011-04-20 17:26 上传



问题解决:

首先,我们写个按钮状态更新的js函数

  1. function update(num) {
  2.             var secs = 60 * 5;
  3.             if (num == secs) {
  4.                 $("#btnResendFax").val("发送传真");
  5.                 $("#btnResendFax").attr("disabled", false);
  6.             }
  7.             else {
  8.                 printnr = secs - num;
  9.                 $("#btnResendFax").val("发送中,距离下次操作还剩" + printnr + "秒");
  10.                 $("#btnResendFax").attr("disabled", true);
  11.             }
  12.         }
复制代码然后,我们再每次单击按钮时执行这样一段js代码

for (i = 1; i <= 60 * 5; i++) {                            window.setTimeout("update( " + i + ") ", i * 1000);                        }
显然,这里我们用到了setTimeout函数。

OK,其实到了这里,已经实现了灰掉按钮并倒计时读秒效果。

但是,当关闭当前页面或浏览器重新打开时,失效了。因此,下面需要对操作按钮的时间设置一个cookie,然后每当打开这个页面时取出这个值,并与当前时间比较,做出相应。

下面就是实现代码:

  1. //页面加载时判断传真发送按钮5分钟倒计时是否已到
  2.         $(document).ready(function () {
  3.             var date = new Date();
  4.             var msNow = date.getTime();
  5.             var msBefore = getCookie("btnResendFaxTime");
  6.             if (msBefore != null) {
  7.                 var msMul = msBefore - msNow;
  8.                 if (msMul > 0) {
  9.                     for (var i = 1, j = parseInt(300 - msMul / 1000); j <= 60 * 5; i++, j++) {
  10.                         window.setTimeout("update( " + j + ") ", i * 1000);
  11.                     }
  12.                 }
  13.             }
  14.         });
  15.         //获取cookie
  16.         function getCookie(name) {
  17.             var prefix = name + "="
  18.             var start = document.cookie.indexOf(prefix)
  19.             if (start == -1) {
  20.                 return null;
  21.             }
  22.             var end = document.cookie.indexOf(";", start + prefix.length)
  23.             if (end == -1) {
  24.                 end = document.cookie.length;
  25.             }
  26.             var value = document.cookie.substring(start + prefix.length, end)
  27.             return unescape(value);
  28.         }
  29.         //设置cookie
  30.        function setCookie(){
  31.             if (!navigator.cookieEnabled) {
  32.                 alert('不Cookie项!');
  33.             }
  34.             else {
  35.                var date = new Date();
  36.                 date.setTime(date.getTime() + 60000 * 5);//5分钟过期
  37.                 document.cookie = 'btnResendFaxTime=' + escape(date.getTime()) + ';expires=' + date.toGMTString() + ';path=/' + ';domaim=null' + ':secure';
  38.             }
  39.         }   
复制代码OK,这样就可以了。欢迎大家提出宝贵意见。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文