¿Deshabilitar/habilitar una entrada con jQuery?

Resuelto omg asked hace 15 años • 19 respuestas
$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?

omg avatar Sep 12 '09 12:09 omg
Aceptado

jQuery 1.6+

Para cambiar la disabledpropiedad 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.

gnarf avatar Sep 12 '2009 05:09 gnarf

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');   
});
geekbuntu avatar Jul 18 '2012 11:07 geekbuntu
// 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

Harini Sekar avatar Apr 07 '2014 10:04 Harini Sekar
$("input")[0].disabled = true;

o

$("input")[0].disabled = false;
Sajjad Shirazi avatar Sep 06 '2014 14:09 Sajjad Shirazi