Javascript 触发后禁用功能调用5秒
我有一个按钮,当有一个函数“active”时,我想禁止再向jquery发送调用 发生的情况是,每次用户点击按钮,计数器就会减少1。 但是这种情况会延迟,请参见此处的步骤Javascript 触发后禁用功能调用5秒,javascript,jquery,Javascript,Jquery,我有一个按钮,当有一个函数“active”时,我想禁止再向jquery发送调用 发生的情况是,每次用户点击按钮,计数器就会减少1。 但是这种情况会延迟,请参见此处的步骤 点击按钮 按钮被禁用 5秒后,计数器将减少,一个按钮更改为enabled(已启用) 然而,现在的问题是,即使按钮应该被禁用,用户也可以只点击X次,而计数器在5秒后会随着X次次数的减少而减少 这意味着电话仍能接通 请看我到目前为止试图做的事情,但不幸的是没有成功 $( document ).ready(function() {
- 点击按钮
- 按钮被禁用
- 5秒后,计数器将减少,一个按钮更改为enabled(已启用)
$( document ).ready(function() {
var enabled=true;
$(".myButton").click(function(){
if(enabled = true) {
setTimeout(function(){
var i = document.getElementById('counter2');
i.innerHTML = parseInt(i.innerHTML)-1;
$('.progress-bar').css("width", '+=' + '35px');
$(".myButton").attr('disabled','enabled');
$('.myButton').css('opacity', '1');
var enabled=true;
},5000)
$(".myButton").attr('disabled','disabled');
$('.myButton').css('opacity', '0.5');
var enabled=false;
} else { }
});
});
你的意思是在这里写==
。或者更好:if(enabled)
asenabled
无论如何都是一个布尔值
在这里使用=true
也是一项任务。当true
为真时,条件将始终计算为true
你的意思是在这里写==
。或者更好:if(enabled)
asenabled
无论如何都是一个布尔值
在这里使用
=true
也是一项任务。由于true
是真实的,因此条件将始终计算为true
,我认为您不需要跟踪变量来监视按钮的状态,因为您已经设置了一个属性来指示它已被禁用。因此,您可以使用该属性作为其状态的指示器
此外,您在类myButton
的所有按钮上都执行此行为。因此,我将处理程序隔离为只单击了按钮的event.target
$(".myButton")
.prop('disabled',false)
.click(function(event){
// get the button that was clicked.
var btn = $(event.target);
if(btn.prop('disabled') === true) {
// it's already disabled, nothing to do
return;
}
// start a 5 second timer
setTimeout(function(){
var i = document.getElementById('counter2');
i.innerHTML = parseInt(i.innerHTML)-1;
//$('.progress-bar').css("width", '+=' + '35px');
// I've never seen += used like this ^^^ does it work?
var bar = $('.progress-bar');
bar.css("width", (bar.width() + 35) + 'px');
// after 5 seconds enable the button
btn.prop('disabled',false);
btn.css('opacity', '1');
},5000);
// disable the button until timer expires.
btn.prop('disabled',true);
btn.css('opacity', '0.5');
});
我认为您不需要跟踪变量来监视按钮的状态,因为您已经设置了一个属性来指示它已被禁用。因此,您可以使用该属性作为其状态的指示器 此外,您在类
myButton
的所有按钮上都执行此行为。因此,我将处理程序隔离为只单击了按钮的event.target
$(".myButton")
.prop('disabled',false)
.click(function(event){
// get the button that was clicked.
var btn = $(event.target);
if(btn.prop('disabled') === true) {
// it's already disabled, nothing to do
return;
}
// start a 5 second timer
setTimeout(function(){
var i = document.getElementById('counter2');
i.innerHTML = parseInt(i.innerHTML)-1;
//$('.progress-bar').css("width", '+=' + '35px');
// I've never seen += used like this ^^^ does it work?
var bar = $('.progress-bar');
bar.css("width", (bar.width() + 35) + 'px');
// after 5 seconds enable the button
btn.prop('disabled',false);
btn.css('opacity', '1');
},5000);
// disable the button until timer expires.
btn.prop('disabled',true);
btn.css('opacity', '0.5');
});
我想你真的很接近了,试着从第2行的第一个声明中删除
var
,在新的函数作用域中定义同名的新变量(单击和设置超时
回调)刚刚尝试过,但没有成功:(它继续这样做(将点击次数相加并将所有点击次数的倒数减少)如果启用=真?…在继续之前只需说reading@Tsalikidis如果(variable=true)在javascript中总是正确的,我不明白你在说什么。(我想至少…)我想你真的很接近了,试着从第2行的第一个声明中删除var
,在新的函数作用域中定义同名的新变量(单击和设置超时
回调)刚刚尝试过,但没有成功:(它继续这样做(将点击次数相加并将所有点击次数的倒数减少)如果启用=真?…在继续之前只需说reading@Tsalikidis如果(variable=true)在javascript中总是正确的,我不明白你在说什么。(我想至少…)是的,这是一个问题,超时后分号丢失。是的,这是一个问题,超时后分号丢失。