2009-03-09 15 views

risposta

10

Da qualche parte all'inizio del vostro script (probabilmente su evento click del pulsante), impostare l'attributo disabilitato del pulsante su true:

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

Poi, una volta completato, rimuovere l'attributo:

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

MODIFICA:

Se si desidera ottenere (leggermente) fantasia, modificare il testo del pulsante mentre si sta facendo il lavoro. Se si tratta di un pulsante immagine, è possibile modificare lo src in un messaggio amichevole "attendere prego". Ecco un esempio della versione testo del pulsante:

$("#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

Questo è un settore dove mi piace di estendere 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; 
    }); 
} 

e quindi si può fare:

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

mi ritrovo disabilitando/abilitando i controlli molto.

+0

Preferisco questa soluzione. Potresti facilmente migliorare la funzione per cambiare anche il testo. – Raithlin

3

Grazie cleto per la vostra funzione. Ho usato la tua funzione e ho creato il mio per attivare gli elementi disabilitati.

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