Siempre use elprop()
método para habilitar o deshabilitar elementos cuando use jQuery (vea a continuación por qué).
En su caso, sería:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});
Ejemplo de jsFiddle aquí.
¿Por qué usar prop()
cuando podrías usar attr()
/ removeAttr()
para hacer esto?
Básicamente, prop()
se debe utilizar cuando obtener o establecer propiedades (como autoplay
, checked
, disabled
y required
, entre otros).
Al usar removeAttr()
, está eliminando completamente el disabled
atributo en sí mismo, mientras prop()
que simplemente está configurando el valor booleano subyacente de la propiedad en falso.
Si bien lo que desea hacer se puede hacer con attr()
/ removeAttr()
, no significa que se deba hacer (y puede causar un comportamiento extraño / problemático, como en este caso).
Los siguientes extractos (tomados de la documentación de jQuery para prop () ) explican estos puntos con mayor detalle:
"La diferencia entre atributos y propiedades puede ser importante en situaciones específicas. Antes de jQuery 1.6, el .attr()
método a veces tomaba en cuenta los valores de propiedad al recuperar algunos atributos, lo que podría causar un comportamiento inconsistente. A partir de jQuery 1.6, el .prop()
método proporciona una forma de recuperar explícitamente valores de propiedad, mientras
.attr()
recupera atributos ".
"Las propiedades generalmente afectan el estado dinámico de un elemento DOM sin cambiar el atributo HTML serializado. Los ejemplos incluyen la value
propiedad de los elementos de entrada, la disabled
propiedad de las entradas y los botones, o la checked
propiedad de una casilla de verificación. El .prop()
método debe usarse para establecer disabled
y checked
no el .attr()
método. El .val()
método debe usarse para obtener y configurar
value
".