2009-03-09 18 views

Respuesta

10

En algún lugar en el comienzo de su script (probablemente el evento click del botón), establece el atributo desactivado del botón para cierto:

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

Luego, cuando haya terminado, retire ese atributo:

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

EDITAR:

Si desea obtener (un poco) elegante, cambie el texto del botón mientras está haciendo el trabajo. Si se trata de un botón de imagen, puede cambiar el src a un mensaje amistoso de "espere por favor". Aquí está un ejemplo de la versión de texto del botón:

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

Ésta es un área en la que me gusta extender 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; 
    }); 
} 

y luego se puede hacer:

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

me encuentro la desactivación/habilitación controla mucho.

+0

Prefiero esta solución. También puede mejorar fácilmente la función para cambiar el texto. – Raithlin

3

Gracias cletus por su función. He utilizado tu función y he creado la mía para alternar elementos deshabilitados.

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