$(function() {
var enabled = false;
$("#button").click(function()
{
if(!enabled) {
enabled = true;
setTimeout(function()
{
console.log("click!");
enabled=false;
},3000);
}
});
});
Kanske?
6 svar · 640 visningar · startad av Travoni
Jag vill att funktionen bara skall köras var 3:de sekund oavsätt hur mycket man än knackar på knappen.
Jag skulle ju kunna disabla den vid knapptryckning men jag vill inte det.
Denna funkar inte...
var enabled = true;
$('#button').click( function(){
enabled=fill_list();
return true;
});
var fill_list = function() {
if(enabled) {
setTimeout(function(){
$('#myDiv').html("Klick " + $('#asdf').html());
}, 3000);
return false;
} else {
return true;
}
}
...
<button id="button">Starta</button>
<div id="myDiv"></div>
$(function() {
var enabled = false;
$("#button").click(function()
{
if(!enabled) {
enabled = true;
setTimeout(function()
{
console.log("click!");
enabled=false;
},3000);
}
});
});
Kanske?
Flytta upp console.log raden ovanför settimeout om du inte vill ha en tre sekunders fördröjning efter man klickat på knappen.
var enabled = true;
$('#button').click( function(){
if(enabled) {
enabled = false;
setTimeout(function(){
enabled = true;
}, 3000);
fill_list();
}
});
var fill_list = function() {
$('#myDiv').html("Klick " + $('#asdf').html());
}
...
<button id="button">Starta</button>
<div id="myDiv"></div>
När du klickar sätts enabled till false, om det tidigare var true. Och timeouten återställer enabled efter tre sekunder. Du kan ju även disablea själva knappen för att göra det tydligare för användaren vad som pågår.
$('#button').click( function(){
$("#button").attr("disabled", "disabled");
setTimeout(function(){
$("#button").removeAttr("disabled");
}, 3000);
fill_list();
});
var fill_list = function() {
$('#myDiv').html("Klick " + $('#asdf').html());
}
...
<button id="button">Starta</button>
<div id="myDiv"></div>
Då slipper du en if-sats som ersätts av att det inte går att klicka på knappen.
Du kan ju även disablea själva knappen för att göra det tydligare för användaren vad som pågår.
Me, my self and I skrev:
Jag skulle ju kunna disabla den vid knapptryckning men jag vill inte det.
:-)
Tack gubbar. Funkar nu.
Travoni, l-boys kod fördröjer körningen av koden 3 sekunder, även om man bara klickar en gång. Är det så du vill ha det? Flytta ut den kod du vill köra utanför setTimeout för att lösa det. Sen kan koden så klart göras ännu mer avancerad så att om du klickar två gånger snabbt så kommer det vill göra först göras en gång på första klicket, och sedan tre sekunder senare.
Och för övrigt heter variabeln i l-boys kod enabled fast enabled = true betyder att knappen är avaktiverad. (Koden funkar lika bra för det, men jag föredrar personligen att variabelnamn är rättvisande.) Däremot får variabeln ett eget scope i hans kod, vilket är bra.