He leído un poco sobre los atributos disabled
y readonly
de los campos de formulario de HTML, pero sigo sin entender bien cómo los tratan los diferentes navegadores. Me gustaría saber sus diferencias porque estoy creando una aplicación que tiene que cumplir de forma estricta las normativas de accesibilidad (debe ser accesible mediante un lector de pantalla).
Respuestas
Los elementos que tienen el atributo readonly
no se pueden modificar, pero su contenido se envía cuando el usuario envía el formulario. Por contra, los elementos con el atributo disabled
no sólo no se pueden modificar sino que no se envían junto con el resto de campos del formulario.
Otra de sus principales diferencias es que los elementos readonly
pueden obtener el foco del navegador (al pulsar Tabulador
varias veces, podrías llegar a seleccionarlo) mientras que los elementos disabled
no pueden obtener el foco.
La especificación oficial del W3C lo explica muy bien en esta sección, pero a continuación extraigo la parte más importante:
Los elementos con el atributo disabled
- Sus valores se ignoran al enviar el formulario, por lo que en el servidor no podrás acceder a estos valores.
- Algunos navegadores antiguos aplican sus propios estilos a estos campos y no se pueden cambiar mediante CSS.
- No pueden obtener el foco del navegador.
- Al pulsar repetidamente el
Tabulador
, estos elementos no se tienen en cuenta y por tanto, nunca se seleccionan.
Los elementos con el atributo readonly
- No todos los elementos HTML soportan este atributo. En concreto, los elementos
<select>
,<option>
y<button>
soportan el atributodisabled
pero no elreadonly
. - Los navegadores no aplican ningún tipo de estilo especial a los campos de sólo lectura. Esto puede confundir a algunos usuarios que no pueden modificar el valor de un campo y no saben por qué.
- Sus valores se tienen en cuenta al enviar el formulario, por lo que podrías acceder a esos valores en el servidor.
- Estos elementos pueden obtener el foco del navegador porque se pueden seleccionar al pulsar
Tabulador
repetidamente.
@librosweb