js设置按钮倒计时

博主分享工作中解决传真发送接口堵塞问题的经验。程序要求传真发送按钮每5分钟才能点击一次,关闭页面再打开仍能倒计时提示。通过编写按钮状态更新的js函数和单击按钮执行的js代码实现基本功能,再用cookie记录操作时间,解决页面关闭重开失效问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

问题提出:

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

效果图:

问题解决:

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

 


 

function update(num) {
var secs = 60 * 5;
if (num == secs) {
$("#btnResendFax").val("发送传真");
$("#btnResendFax").attr("disabled", false);
}
else {
printnr = secs - num;
$("#btnResendFax").val("发送中,距离下次操作还剩" + printnr + "秒");
$("#btnResendFax").attr("disabled", true);
}
}

复制代码

然后,我们再每次单击按钮时执行这样一段js代码


 

for (i = 1; i <= 60 * 5; i++) {
window.setTimeout("update( " + i + ") ", i * 1000);
}

显然,这里我们用到了setTimeout函数。

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

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

下面就是实现代码:

 


 

//页面加载时判断传真发送按钮5分钟倒计时是否已到
$(document).ready(function () {
var date = new Date();
var msNow = date.getTime();
var msBefore = getCookie("btnResendFaxTime");
if (msBefore != null) {
var msMul = msBefore - msNow;
if (msMul > 0) {
for (var i = 1, j = parseInt(300 - msMul / 1000); j <= 60 * 5; i++, j++) {
window.setTimeout("update( " + j + ") ", i * 1000);
}
}
}
});
//获取cookie
function getCookie(name) {
var prefix = name + "="
var start = document.cookie.indexOf(prefix)
if (start == -1) {
return null;
}
var end = document.cookie.indexOf(";", start + prefix.length)
if (end == -1) {
end = document.cookie.length;
}
var value = document.cookie.substring(start + prefix.length, end)
return unescape(value);
}
//设置cookie
function setCookie(){
if (!navigator.cookieEnabled) {
alert('不Cookie项!');
}
else {
var date = new Date();
date.setTime(date.getTime() + 60000 * 5);//5分钟过期
document.cookie = 'btnResendFaxTime=' + escape(date.getTime()) +
';expires=' + date.toGMTString() + ';path=/' + ';domaim=null' + ':secure';
}
}

 

OK,这样就可以了。欢迎大家提出宝贵意见。

### JavaScript 实现倒计时按钮功能 以下是通过 JavaScript 实现一个简单的倒计时按钮的方法。此方法允许用户设置特定的时间间隔,在这段时间内禁用按钮并显示剩余时间,直到倒计时结束再启用按钮。 ```javascript // HTML 部分 <button id="countdownButton">10s</button> // JavaScript 部分 var button = document.getElementById('countdownButton'); var countdownTime = 10; function startCountdown() { let remainingTime = countdownTime; button.disabled = true; // 禁用按钮 const intervalId = setInterval(() => { button.textContent = `${remainingTime}s`; remainingTime--; if (remainingTime < 0) { clearInterval(intervalId); button.disabled = false; // 启用按钮 button.textContent = '点击'; } }, 1000); } window.onload = function () { startCountdown(); }; ``` #### 功能说明 上述代码实现了以下功能: - 页面载完成后自动启动倒计时[^2]。 - 按钮初始状态被禁用,并显示倒计时时间。 - 每隔一更新按钮上的文字内容,表示当前剩余数。 - 当倒计时结束后,重新启用按钮并将文本恢复为默认值“点击”。 #### 关键点解析 - **`setInterval()` 函数**:用于每隔固定时间执行一段代码。在此处每减少一次剩余时间变量 `remainingTime` 的值[^3]。 - **`clearInterval()` 函数**:当条件满足时停止定时器操作,防止无限循环运行。 - **动态修改 DOM 元素属性**:利用 `textContent` 和 `disabled` 属性来改变按钮的文字以及交互状态[^4]。 ### 注意事项 如果需要调整倒计时时长,则只需更改全局变量 `countdownTime` 的数值即可适应不同的需求场景[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值