Últimamente, se está planteando crear formularios mediante listas de definición y se está generando muchas dudas sobre si es acertado hacerlo así o no.
En su día, yo también me planteé esa duda. Creí estar convencido de que es acertado usar listas de definición para cada elemento de un formulario y al final acabé descartandolo completamente.
¿Por qué creí que una lista de definición puede marcar correctamente un formulario?
Una lista de definición está compuesta de elementos (items), igual que un formulario está compuesto de datos que se solicitan al usuario. Puede considerarse que cada dato de un formulario es un elemento de la lista de definición.
A su vez, cada elemento de una lista de definición contiene un término y una definición, del mismo modo que cada dato de un formulario tiene una etiqueta y un campo donde el usuario ha de definir el dato.
¿Por qué ahora creo que es incorrecto hacerlo así?
No todos los datos que se solicitan en un formulario encajan perfectamente en una lista de definición. Por ejemplo, un dato que se pide a partir de campos checkbox o radio buttons no encaja.
No garantiza accesibilidad, es más, crea problemas de accesibilidad en algunas versiones de JAWS.
El valor semántico queda definido a partir del <label> de la etiqueta de cada campo ya que éste debe encerrar el <input> del campo asociado, por tanto, es innecesario aumentar el peso de la página mediante marcas de listas de definición.
Conclusión
Creo que la única ventaja que se obtiene de marcar un formulario con listas de definición es una ventaja visual, de presentación, que realmente debe ser tratado con CSS.
Desde el punto de vista semántico no aporta nada sobre el uso correcto de las etiquetas, y desde el punto de vista de la accesibilidad, creo que la complica.
Por tanto, yo creo que usar listas de definición para marcar formularios es incorrecto.



¿En qué te basas para decir eso?
¿No está claro? Es una reflexión basada en mi experiencia.
Básicamente, lo escribo porque son conclusiones a las que he llegado yo por mí mismo y a través de lo que leí en los foros de Ovillo.
Desde luego, lo que digo no es la Biblia. Si crees que no estás de acuerdo, escríbelo.
Primero, calmate porque fue sólo una pregunta.
Sí decis "crea problemas con Jaws", es normal que pregunte si lo estuviste usando vos o lo leiste en algún otro lado, en cuyo caso sería útil que publicaras el enlace a otras referencias.
Perdona, Federico. Veo que me pasé poniéndome a la defensiva. Es que últimamente se me echan al cuello.
Lo del JAWS lo dijo Emanuelle Gutiérrez Crespo en Acceso Web. Siendo objetivos no tengo ninguna prueba de que relamente sea así, pero me fio de lo que diga porque ella trabaja con estas cosas.
He encontrado el enlace a la conversación en Yahoo Groups para que puedas leer el comentario de Emanuelle: Formularios con listas de definición... o no. Si te interesa mucho, tendrás que buscarlo. Esta fechado el 11 de mayo de 2006, 0:14.
Lo malo es que también le estarían pinchando el globo a los que usan tablas para maquetar formularios.
Curiosamente, eXaminator (un test de accesibilidad) recomienda encerrar los input dentro de label, por lo que también desaconsejaría las listas de definiciones.
Sí, se me olvidó mencionarlo. Gracias.
Se supone que los label se pueden declarar implícitamente encerrando los input, o explícitamente, fuera de los inputs y usando el atributo for. El recomendado según las pautas de accesibilidad, que yo recuerde, es el primero, para mayor compatibilidad.