2009-03-09 6 views

Répondre

10

Quelque part au début de votre script (probablement l'événement de clic du bouton), définissez l'attribut désactivé du bouton true:

$("#mybutton").attr("disabled", true); 

Ensuite, lorsque vous avez terminé, retirez cet attribut:

$("#mybutton").removeAttr("disabled"); 

EDIT:

Si vous voulez obtenir (légèrement) de fantaisie, changez le texte du bouton pendant que vous faites le travail. Si c'est un bouton d'image, vous pouvez changer le src pour un match amical message « S'il vous plaît attendre ». Voici un exemple de la version texte du bouton:

$("#mybutton").click(function() { 
    var origVal = $(this).attr("value"); 

    $(this).attr("value", "Please wait..."); 
    $(this).attr("disabled", true); 

    //Do your processing. 

    $(this).removeAttr("disabled"); 
    $(this).attr("value", origVal); 
}); 
33

C'est un domaine où j'aime étendre jQuery:

$.fn.disable = function() { 
    return this.each(function() { 
     if (typeof this.disabled != "undefined") this.disabled = true; 
    }); 
} 

$.fn.enable = function() { 
    return this.each(function() { 
     if (typeof this.disabled != "undefined") this.disabled = false; 
    }); 
} 

et vous pouvez le faire:

$("#button").disable(); 
$("#button").enable(); 

je me trouve désactiver/activer beaucoup de contrôles.

+0

Je préfère cette solution. Vous pouvez facilement améliorer la fonction pour changer le texte, aussi. – Raithlin

3

Merci Cletus pour votre fonction. Je l'ai utilisé votre fonction et créé mon propre pour basculer éléments désactivés.

$.fn.toggleDisable = function() { 
    return this.each(function() { 
     if (typeof this.disabled != "undefined"){ 
       if(this.disabled){ 
        this.disabled = false; 
       }else{ 
        this.disabled = true; 
       } 
     } 
    }); 
} 
Questions connexes