$input.disabled = true;
o
$input.disabled = "disabled";
¿Cuál es la forma estándar? Y, por el contrario, ¿cómo se habilita una entrada deshabilitada?
javascript
jquery
html-input
disabled-input
Dios mio
fuente
fuente
Respuestas:
jQuery 1.6+
Para cambiar la
disabled
propiedad, debe usar la.prop()
función.jQuery 1.5 y abajo
La
.prop()
función no existe, pero.attr()
es similar:Establecer el atributo deshabilitado.
Para habilitar nuevamente, el método apropiado es usar
.removeAttr()
En cualquier versión de jQuery
Siempre puede confiar en el objeto DOM real y probablemente sea un poco más rápido que las otras dos opciones si solo se trata de un elemento:
La ventaja de utilizar los métodos
.prop()
o.attr()
es que puede establecer la propiedad para un grupo de elementos seleccionados.Nota: En 1.6 hay un
.removeProp()
método que se parece muchoremoveAttr()
, pero NO DEBE SER USADO en propiedades nativas como'disabled'
Extracto de la documentación:De hecho, dudo que haya muchos usos legítimos para este método, los accesorios booleanos se realizan de tal manera que debería establecerlos en falso en lugar de "eliminarlos" como sus contrapartes de "atributo" en 1.5
fuente
':input'
, no solo'input'
. Este último selecciona solo elementos <input> reales.input,textarea,select,button
es un poco mejor de usar que:input
,:input
ya que un selector es bastante ineficiente porque tiene que seleccionar,*
luego recorrer cada elemento y filtrar por nombre de etiqueta, si pasa los 4 selectores de nombre de etiqueta directamente, es MUCHO más rápido. Además,:input
no es un selector CSS estándar, por lo que cualquier beneficio de rendimiento que son posibles a partirquerySelectorAll
son perdidos.removeProp("disabled")
estaba causando el problema de "la propiedad se elimina por completo y no se agrega nuevamente", como señaló @ThomasDavidBaker, en el caso de algunos navegadores como Chrome, mientras que funcionaba bien en algunos como Firefox. Realmente deberíamos tener cuidado aquí. Siempre use.prop("disabled",false)
en su lugarSolo por las nuevas convenciones && haciéndolo adaptable en el futuro (a menos que las cosas cambien drásticamente con ECMA6 (????):
y
fuente
$(document).on('event_name', '#your_id', function() {...})
lugar de$('#your_id').on('event_name', function() {...})
? Como se describe en la documentación de jQuery .on (), el primero usa la delegación y escucha todos losevent_name
eventos que surgendocument
y comprueba que coincidan#your_id
. Este último escucha específicamente$('#your_id')
eventos solamente y eso se escala mejor.A veces necesita deshabilitar / habilitar el elemento de formulario como input o textarea Jquery te ayuda a hacer esto fácilmente con la configuración del atributo desactivado en "desactivado". Por ejemplo:
Para habilitar el elemento deshabilitado debe eliminar el atributo "deshabilitado" de este elemento o vaciar su cadena. Por ejemplo:
consulte: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
fuente
o
fuente
Puede poner esto en algún lugar global en su código:
Y luego puedes escribir cosas como:
fuente
prop
y noattr
con ladisabled
propiedad para que funcione correctamente (suponiendo que jQuery 1.6 o superior).attr
? Utilizo el código anterior en algunos proyectos y, por lo que recuerdo, funciona bienchecked
propiedad de casillas de verificación. Usarattr
no dará el mismo resultado.Si solo desea invertir el estado actual (como el comportamiento de un botón de alternar):
fuente
Hay muchas formas de usarlos: puede habilitar / deshabilitar cualquier elemento :
Enfoque 1
Enfoque 2
Si está utilizando jQuery 1.7 o una versión superior, use prop (), en lugar de attr ().
Si desea habilitar cualquier elemento, solo tiene que hacer lo contrario de lo que hizo para que se desactive. Sin embargo, jQuery proporciona otra forma de eliminar cualquier atributo.
Enfoque 1
Enfoque 2
Enfoque 3
Nuevamente, si está utilizando jQuery 1.7 o una versión superior, use prop (), en lugar de attr (). Esto es. Así es como habilita o deshabilita cualquier elemento usando jQuery.
fuente
Actualización para 2018:
Ahora no hay necesidad de jQuery y que ha sido un tiempo desde
document.querySelector
odocument.querySelectorAll
(para múltiples elementos) hacer casi exactamente el mismo trabajo como $, además de los más explícitosgetElementById
,getElementsByClassName
,getElementsByTagName
Deshabilitar un campo de la clase "input-checkbox"
o elementos múltiples
fuente
Puede usar el método jQuery prop () para deshabilitar o habilitar el elemento de formulario o controlar dinámicamente usando jQuery. El método prop () requiere jQuery 1.6 y superior.
Ejemplo:
fuente
Inhabilitar:
Habilitar:
fuente
Desactivar verdadero para el tipo de entrada:
fuente
$("input[name=method]").prop('disabled', true);
esto funciona para mi
fuente
Usé @gnarf answer y lo agregué como función
Luego usa así
fuente
2018, sin JQuery (ES6)
Deshabilitar todo
input
:Deshabilitar
input
conid="my-input"
La pregunta es con JQuery, es solo para su información.
fuente
Enfoque 4 (esta es una extensión de la respuesta del codificador salvaje )
fuente
Usar así,
fuente
fuente
En jQuery Mobile:
Para deshabilitar
Para habilitar
fuente