jquery désactiver un bouton pour une heure spécifique

Je veux désactiver un bouton pour une heure spécifique. Comment puis je faire ça?

Désactivez le bouton, puis utilisez setTimeout pour exécuter une fonction qui active le bouton après quelques secondes.

$('#some-button').attr("disabled", "disabled"); setTimeout('enableButton()', 5000); function enableButton(){ $('#some-button').removeAttr('disabled'); } 

Comme il s’agit probablement d’une tâche que vous voudrez peut-être répéter, je pense que la meilleure façon de procéder consiste à étendre jQuery de la manière suivante:

 $.fn.timedDisable = function(time) { if (time == null) { time = 5000; } return $(this).each(function() { $(this).attr('disabled', 'disabled'); var disabledElem = $(this); setTimeout(function() { disabledElem.removeAttr('disabled'); }, time); }); }; 

Cela vous permettra d’appeler une fonction sur un ensemble d’éléments correspondants qui les désactivera temporairement. Comme il est écrit, vous pouvez simplement appeler la fonction et les éléments sélectionnés seront désactivés pendant 5 secondes. Vous feriez ça comme ça:

 $('#some-button').timedDisable(); 

Vous pouvez ajuster le réglage de l’heure par défaut en modifiant le 5000 dans la ligne suivante:

 if (time == null) { time = 5000; } 

Vous pouvez éventuellement transmettre une valeur de temps en millisecondes pour contrôler la durée pendant laquelle les éléments seront désactivés. Par exemple:

 $('#some-button').timedDisable(1000); 

Voici une démo de travail: http://jsfiddle.net/fG2ES/

Essaye ça.

 (function(){ $('button').on('click',function(){ var $this=$(this); $this .attr('disabled','disabled'); setTimeout(function() { $this.removeAttr('disabled'); }, 3000); }); })(); 

Vous pouvez trouver un exemple de travail ici http://jsfiddle.net/informativejavascript/AMqb5/

Ce n’était peut-être pas la solution la plus élégante, mais je pensais jouer avec les files d’attente jQuery sur celle-ci …

 ​$.fn.disableFor = function (time) { var el = this, qname = 'disqueue'; el.queue(qname, function () { el.attr('disabled', 'disabled'); setTimeout( function () { el.dequeue(qname); }, time || 3000); }) .queue(qname, function () { el.removeAttr('disabled'); }) .dequeue(qname); }; $('#btn').click( function () { ​$(this).disableFor(2000);​​​​ }); 

C’est là que j’ai travaillé … http://jsfiddle.net/T9QJM/

Et, pour référence, comment puis-je chaîner ou mettre en queue des fonctions personnalisées à l’aide de JQuery?