¿Es posible deshabilitar los campos de formulario usando CSS? Por supuesto, sé sobre el atributo deshabilitado, pero ¿es posible especificar esto en una regla CSS? Algo como -
<input type="text" name="username" value="admin" >
<style type="text/css">
input[name=username] {
disabled: true; /* Does not work */
}
</style>
La razón por la que pregunto es que tengo una aplicación donde los campos del formulario se generan automáticamente y los campos se ocultan / muestran en función de algunas reglas (que se ejecutan en Javascript). Ahora quiero extenderlo para admitir los campos de deshabilitación / habilitación, pero la forma en que se escriben las reglas para manipular directamente las propiedades de estilo de los campos de formulario. Así que ahora tengo que extender el motor de reglas para cambiar los atributos, así como el estilo de los campos de formulario y de alguna manera parece menos que ideal.
Es muy curioso que tenga propiedades visibles y de visualización en CSS pero no habilite / deshabilite. ¿Hay algo parecido en el estándar HTML5 aún en obras, o incluso algo no estándar (específico del navegador)?
Respuestas:
Esto puede ser útil:
Actualizar:
y si desea deshabilitar el índice de pestañas, puede usarlo de esta manera:
fuente
Puede fingir el efecto deshabilitado usando CSS.
También es posible que desee cambiar los colores, etc.
fuente
Dado que las reglas se ejecutan en JavaScript, ¿por qué no deshabilitarlas usando javascript (o en mi caso de ejemplo, jQuery)?
ACTUALIZAR
La
attr
función ya no es el enfoque principal para esto, como se señaló en los comentarios a continuación. Esto ahora se hace con laprop
función.fuente
.prop()
lugar de.attr()
para este caso. "A partir de jQuery 1.6, el método .attr () devuelve indefinido para los atributos que no se han establecido. Para recuperar y cambiar las propiedades DOM como el estado verificado, seleccionado o deshabilitado de los elementos de formulario, use el método .prop (). " Documentación de origen: .attr () y .prop ()Es muy curioso que creas que es muy curioso. Estás malinterpretando el propósito de CSS. CSS no está destinado a cambiar el comportamiento de los elementos del formulario. Está destinado a cambiar su estilo solamente. Ocultar un campo de texto no significa que el campo de texto ya no esté allí o que el navegador no enviará sus datos cuando envíe el formulario. Todo lo que hace es esconderlo de los ojos del usuario.
Para deshabilitar sus campos, debe usar el
disabled
atributo en HTML o ladisabled
propiedad DOM en JavaScript.fuente
pointer-events
ser una propiedad CSS. FYI, sepointer-events
origina en SVG .No puede usar CSS para deshabilitar Textbox. La solución sería el atributo HTML.
fuente
disabled
atributo no se envían ; sus valores no se publican en el servidor. SigueLa solución práctica es usar CSS para ocultar realmente la entrada.
Para llevar esto a su conclusión natural, puede escribir dos entradas html para cada entrada real (una habilitada y otra deshabilitada) y luego usar JavaScript para controlar el CSS para mostrarlas y ocultarlas.
fuente
primera vez respondiendo algo, y aparentemente un poco tarde ...
Estoy de acuerdo en hacerlo por JavaScript, si ya lo está utilizando.
Para una estructura compuesta, como uso habitualmente, hice un pseudo elemento css para bloquear los elementos de la interacción del usuario y permitir el estilo sin tener que manipular toda la estructura.
Por ejemplo:
Puedo colocar un
disabled
clase en el envoltoriodiv
Esto sería texto gris dentro del
div
y lo haría inutilizable para el usuario.Mi ejemplo JSFiddle
fuente
Siempre estoy usando:
y luego aplicando la clase css al campo de entrada:
fuente
Sé que esta pregunta es bastante antigua, pero para otros usuarios que se encuentran con este problema, supongo que la forma más fácil de desactivar la entrada es simplemente ': disabled'
En realidad, si tiene algún script para deshabilitar la entrada de forma dinámica / automática con javascript o jquery que se deshabilitaría automáticamente según la condición que agregue.
En jQuery por ejemplo:
Espero que la respuesta en CSS ayude.
fuente
Me temo que no puede hacer eso, pero puede hacer lo siguiente en jQuery, si no desea agregar los atributos a los campos. Simplemente coloque esto dentro de su
<head></head>
etiquetaSi está generando los campos en el DOM (con JS), debe hacer esto en su lugar:
fuente
Esto se puede hacer para un propósito no crítico colocando una superposición encima de su elemento de entrada. Aquí está mi ejemplo en HTML puro y CSS.
https://jsfiddle.net/1tL40L99/
fuente
No hay forma de usar CSS para este propósito. Mi consejo es incluir un código javascript donde asignes o cambies la clase css aplicada a las entradas. Algo como eso :
fuente
Una variación de la
pointer-events: none;
solución, que resuelve el problema de que la entrada aún sea accesible a través de su control etiquetado o tabindex, es envolver la entrada en un div, que tiene el estilo de entrada de texto deshabilitada, y configurarlainput { visibility: hidden; }
cuando la entrada está "deshabilitada" .Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
El estilo deshabilitado aplicado en el fragmento anterior se toma de la interfaz de usuario de Chrome y puede no ser visualmente idéntico a las entradas deshabilitadas en otros navegadores. Posiblemente se puede personalizar para navegadores individuales utilizando prefijos de extensión CSS específicos del motor. Aunque de un vistazo, no creo que pueda:
extensiones CSS de Microsoft , extensiones CSS de Mozilla , extensiones CSS de WebKit
Parecería mucho más sensato para introducir un valor adicional
visibility: disabled
odisplay: disabled
o tal vez inclusoappearance: disabled
, teniendo en cuenta quevisibility: hidden
ya afecta el comportamiento de los elementos aplicables los elementos de control asociados.fuente