Revista Economía

Deshabilitar/habilitar un input con jQuery

Publicado el 28 abril 2016 por Elvenbyte @elvenbyte

jqueryjQuery 1.6 o superior

Para cambiar la propiedad deshabilitada tienes que usar la función .prop().

JavaScript $("input").prop('disabled', true); $("input").prop('disabled', false);

12 $("input")prop('disabled',true);$("input")prop('disabled',false);

jQuery 1.5 o anteriores

La función .prop() no existe, pero .attr() hace algo similar: grabar el atributo disabled.

JavaScript $("input").attr('disabled','disabled');

1 $("input")attr('disabled','disabled');

Para habilitarlo de nuevo, el método apropiado sería .removeAttr()

JavaScript $("input").removeAttr('disabled');

1 $("input")removeAttr('disabled');

En cualquier versión de jQuery

Siempre nos podemos apoyar en el objeto DOM actual, lo cual sea probablemente un poco más rápido que las otras dos opciones, si sólo vas a cambiar un elemento:

JavaScript // assuming an event handler thus 'this' this.disabled = true;

12 // assuming an event handler thus 'this'thisdisabled=true;

La ventaja de utilizar los métodos .prop() o .attr() es que puedes poner la propiedad para un montón de elementos seleccionados.

Nota: En 1.6 hay un método .removeProp() que puede parecerse mucho a removeAttr(), pero NO DEBE UTILIZARSE con propiedades nativas como disabled. Extracto de la documentación (en inglés):

“Note: Do not use this method to remove native properties such as checked, disabled, or selected. This will remove the property completely and, once removed, cannot be added again to element. Use .prop() to set these properties to false instead.”

De hecho, dudo que haya muchos usos legítimos para este método; las propiedades booleanas están hechas de manera que haya que setearlas a false, en lugar de “borrarlas” (remove), como en sus atributos de la 1.5.

Share

Volver a la Portada de Logo Paperblog