Tengo que deshabilitar las entradas al principio y luego al hacer clic en un enlace para habilitarlas.
Esto es lo que he intentado hasta ahora, pero no funciona.
HTML:
<input type="text" disabled="disabled" class="inputDisabled" value="">jQuery:
$("#edit").click(function(event){
   event.preventDefault();
   $('.inputDisabled').removeAttr("disabled")
});
Esto me muestra truey luego, falsepero nada cambia para las entradas:
$("#edit").click(function(event){
   alert('');
   event.preventDefault();
   alert($('.inputDisabled').attr('disabled'));
   $('.inputDisabled').removeAttr("disabled");
   alert($('.inputDisabled').attr('disabled'));
});
                    
                        javascript
                                jquery
                                disabled-input
                                
                    
                    
                        fatiDev
fuente
                
                fuente

Respuestas:
Siempre use el
prop()método para habilitar o deshabilitar elementos cuando use jQuery (vea a continuación por qué).En su caso, sería:
Ejemplo de jsFiddle aquí.
Básicamente,
prop()se debe utilizar cuando obtener o establecer propiedades (comoautoplay,checked,disabledyrequired, entre otros).Al usar
removeAttr(), está eliminando completamente eldisabledatributo en sí mismo, mientrasprop()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:
fuente
attrversusproppara casillas de verificación: w3.org/TR/html5/forms.html#concept-input-checked-dirty excepto para jQuery interno Solución alternativa mágica..prop()se ejecutó en el elemento señalado porthis(this.prop("disabled", false)pero al estar en una devolución de llamada estaba vinculado al elemento incorrecto, así que tuve que hacer lavar that = thissolución común . Intentar jugar con.apply()/.call()no funcionaba bien; no sé por qué. Verifique con unconsole.log(this)si está configurado para su objeto deseado, justo antes de llamarthis.prop(...)disabledpropiedad deshabilitará el elemento. Por ejemplo, tener una<button disabled="false"></button>voluntad no habilitará el botón, la propiedad debe ser eliminada. Al llamar a$('button').prop('disabled', false);jQuery eliminará la propiedad por usted, como lo observé en este código (inspeccione para ver la eliminación de la propiedad).http://jsfiddle.net/ZwHfY/
fuente
para eliminar el uso de atributos deshabilitados,
y para agregar el uso de atributos deshabilitados,
Disfruta :)
fuente
Usar así,
HTML:
JS:
fuente
<a>, en el que.prop('disabled', false)no funciona. Lo cambié a a<button>y funciona ahoraCreo que está intentando alternar el estado deshabilitado, en caso de que deba usar esto (de esta pregunta ):
Aquí hay un violín que funciona.
fuente
Pensé que esto puede configurar fácilmente
fuente
Este fue el único código que funcionó para mí:
Tenga en cuenta que es
removePropy noremoveAttr.Estoy usando
jQuery 2.1.3aquifuente
2018, sin JQuery
Sé que la pregunta es sobre JQuery: esta respuesta es solo para su información.
fuente
Esta pregunta menciona específicamente jQuery, pero si está buscando lograr esto sin jQuery, el equivalente en JavaScript vainilla es:
fuente
elem.removeAttr('disabled');funciona para mí