¿Deshabilitar/habilitar una entrada con jQuery?
$input.disabled = true;
o
$input.disabled = "disabled";
¿Cuál es la forma estándar? Y, a la inversa, ¿cómo se habilita una entrada deshabilitada?
jQuery 1.6+
Para cambiar la disabled
propiedad debes usar la .prop()
función.
$("input").prop('disabled', true);
$("input").prop('disabled', false);
jQuery 1.5 y anteriores
La .prop()
función no existe, pero .attr()
es similar:
Establezca el atributo deshabilitado.
$("input").attr('disabled','disabled');
Para habilitar nuevamente, el método adecuado es usar.removeAttr()
$("input").removeAttr('disabled');
En cualquier versión de jQuery
Siempre puedes confiar en el objeto DOM real y probablemente sea un poco más rápido que las otras dos opciones si solo estás tratando con un elemento:
// assuming an event handler thus 'this'
this.disabled = true;
La ventaja de utilizar los métodos .prop()
o .attr()
es que puede establecer la propiedad para varios elementos seleccionados.
Nota: En 1.6 hay un .removeProp()
método que se parece mucho a removeAttr()
, pero NO DEBE UTILIZARSE en propiedades nativas como 'disabled'
Extracto de la documentación:
Nota: No utilice este método para eliminar propiedades nativas como marcadas, deshabilitadas o seleccionadas. Esto eliminará la propiedad por completo y, una vez eliminada, no se podrá volver a agregar al elemento. Utilice .prop() para establecer estas propiedades en falso.
De hecho, dudo que haya muchos usos legítimos para este método, los accesorios booleanos se realizan de tal manera que deberías establecerlos en falso en lugar de "eliminarlos" como sus contrapartes de "atributo" en 1.5.
Solo por el bien de nuevas convenciones y hacerlo adaptable en el futuro (a menos que las cosas cambien drásticamente con ECMA6(????):
$(document).on('event_name', '#your_id', function() {
$(this).removeAttr('disabled');
});
y
$(document).off('event_name', '#your_id', function() {
$(this).attr('disabled','disabled');
});
// Disable #x
$( "#x" ).prop( "disabled", true );
// Enable #x
$( "#x" ).prop( "disabled", false );
A veces es necesario deshabilitar/habilitar el elemento del formulario como entrada o área de texto. Jquery le ayuda a hacer esto fácilmente configurando el atributo deshabilitado en "deshabilitado". Por ejemplo:
//To disable
$('.someElement').attr('disabled', 'disabled');
Para habilitar el elemento deshabilitado, debe eliminar el atributo "deshabilitado" de este elemento o vaciar su cadena. Por ejemplo:
//To enable
$('.someElement').removeAttr('disabled');
// OR you can set attr to ""
$('.someElement').attr('disabled', '');
referencia: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
$("input")[0].disabled = true;
o
$("input")[0].disabled = false;