¿Cómo mejorar la accesibilidad de un formulario de contacto?
Un formulario de contacto accesible es esencial para garantizar que todas las personas, independientemente de sus capacidades, puedan interactuar con tu sitio web. A continuación, exploraremos cómo puedes mejorar la accesibilidad de tu formulario de contacto utilizando algunas técnicas básicas pero efectivas.
¿Cómo agregar instrucciones claras al formulario?
Añadir instrucciones claras en tu formulario es fundamental para guiar a los usuarios sobre cómo deben interactuar con él. Aquí te muestro cómo puedes lograrlo:
Instrucciones al inicio del formulario:
Asegúrate de proporcionar un párrafo inicial en tu formulario que explique claramente su propósito. Por ejemplo, podrías incluir un texto como "Para mandarme un mensaje, utiliza el formulario a continuación."
<form><pclass="hincho">Para mandarme un mensaje, utiliza el formulario a continuación.</p> ...
</form>
Este tipo de mensajes no solo aclaran el uso del formulario, sino que también mejoran la experiencia del usuario, haciéndola más inclusiva.
¿Por qué usar etiquetas semánticas?
Las etiquetas semánticas como <label> y <input> en HTML ayudan a que las aplicaciones de asistencia, como los lectores de pantalla, comuniquen adecuadamente la información al usuario. Implementar esto en tu formulario es vital para asegurar su accesibilidad.
Uso de etiquetas <label>: Asegúrate de que cada campo <input> tenga su correspondiente etiqueta <label> vinculada mediante el atributo for, que debe coincidir con el id del campo de entrada.
¿Cómo implementar validaciones de formulario accesibles?
El uso de validaciones no solo mejora la precisión de los datos, sino que también brinda feedback claro a los usuarios, lo que es crucial para la accesibilidad.
Eventos y funciones en JavaScript: Utiliza eventos para manejar la validación antes de enviar el formulario.
document.querySelector("form").addEventListener("submit",function(event){ event.preventDefault();let nombre =document.getElementById("nombre").value;let errorElement =document.getElementById("nombre-error");if(nombre.trim()===""){ errorElement.textContent="El formulario necesita un nombre.";}else{ errorElement.textContent="";// Lógica para enviar el formulario.}});
Esta función verifica si el campo de entrada está vacío y, si es así, muestra un mensaje de error, permitiendo al usuario corregir su error.
¿Cómo mejorar el feedback visual para errores?
Comunicar errores mediante colores puede ser un problema para usuarios con daltonismo u otras discapacidades visuales. En su lugar, utiliza texto para describir el error y, opcionalmente, considera agregar un cambio de color con suficiente contraste.
Estilos en CSS: Asegúrate de proporcionar acceso visual a los mensajes de error utilizando estilos que sean claros y visibles para todos.
.error-message{color:#900;/* Rojo oscuro para buen contraste */font-weight: bold;}
Con estos cambios, tu formulario no sólo será más accesible para toda la audiencia, sino que también mejorará la experiencia del usuario, permitiéndoles interactuar más fácilmente con tu sitio web. Recuerda, la accesibilidad es una mejora continua, así que sigue explorando y aplicando estas prácticas.
En este curso también aprendí que parágrafo es otra manera de decir párrafo xD En México nunca lo habia escuchado.
SAME
x2
todos los front deberia ver este curso!
Aquí hay uno :)
El método preventDefault () cancela el evento si es cancelable, lo que significa que la acción predeterminada que pertenece al evento no ocurrirá.
hay un atributo que ayuda a validar los formulario, el atributo es require (No recibe ningún valor)
este atributo hace que al momento de hacer un submit, si el input en el que pusiste el require esta vacío, lo enfoca y nos avisa de forma automática que es obligatorio llenarlo.
Este curso es Oro realmente es increible como se debe tener en cuenta la accesibilidad
Termine las validaciones de los otros input:
functionValidacion(e){ e.preventDefault();letTrues=0;constName=document.getElementById("Nombre").value;console.log(Name);if(Name===""){document.querySelector("#Nombre__Error").innerHTML="! Para enviar el formulario, debes poner tu nombre";}else{document.querySelector("#Nombre__Error").style.display="none";Trues++;}constCorreo=document.getElementById("Correo").value;console.log(Name);if(Correo===""){document.querySelector("#Email__Error").innerHTML="! Para enviar el formulario, debes poner tu correo";}else{document.querySelector("#Email__Error").style.display="none";Trues++;}constMensaje=document.getElementById("Mensaje").value;console.log(Name);if(Mensaje===""){document.querySelector("#Mensaje__Error").innerHTML="! Para enviar el formulario, debes poner tu Mensaje";}else{document.querySelector("#Mensaje__Error").style.display="none";Trues++;}if(Trues===3){showNotification();}}
Si todo esta en blanco muestra el mensaje, a medida que va llenando pero siguen campos vacios oculta el mensaje a los que ya lleno y al enviar hace el reset();
El atributo de "aria-required" se lo colocas al input y para las personas usando lectores de pantalla, al no llenar un campo, el foco va a ese campo que no se llenó y le dice al usuario qué campo es y que es obligatorio
No entiendo bien, porque acá la profesora no recomienda usar colores para la validación, cuando en todo UX se solicita justamente lo contrario.🤔
Hola!
Eso es porque puede haber personas que no pueden ver colores y hacer validaciones únicamente basadas en colores pueden afectar la experiencia de esos usuarios, por eso es mejor agregar etiquetas o mejores referencias visuales para denotar validaciones o advertencias.
En este curso no se usan colores porque el color de fondo no contrasta correctamente. Es muy recomendable usar colores, como el rojo o el verde, pero también es importante ser explicito en el mensaje de error o de acción realizada para aquellos que no pueden ver los colores entiendan si hicieron algo bien o mal
Para los input del correo y del mensaje:
<inputtype="text"aria-label="Correo"required/><inputtype="text"aria-label="Caja de texto para mensaje"required/>
Para manejar todos los span de la misma manera en el CSS:
functionvalidateForm(e){ e.preventDefault();const nameField =document.getElementById('name')if(nameField.value===''){document.getElementById('name-error').innerHTML='¡El nombre no puede estar vacío!'document.getElementById('email-error').innerHTML='¡El correo no puede estar vacío!'document.getElementById('message-error').innerHTML='¡El mensaje no puede estar vacío!'}else{showNotification()}}
Se que anteriormente se dijo que no se debe expresar significado con color, pero ese mensaje de validación en blanco me descoloca completamente.
¿Habrá alguna manera de hacer que si parezca un mensaje de error y no un texto cualquiera?
A lo que se refería era que no solo se haga con color puedes agregarle iconos además que de por si usar el atributo aria-label ayudare a entender la alera o mensaje de error.
Yo pienso que igual puedes colocarle el color rojo a la letra y para las personas que no puedan interpretar el color, el contenido del texto dirá que está diciendo el mensaje. Y el lector de pantalla ayudará para leer esa descripción
Estoy teniendo un problema con el preventDefault y es que también previene el mensaje de error cuando le colocas el atributo "required" a un input y la persona no introduce nada ahí.
.
El preventDefault está previniendo que la pagina no se refresque pero también está previniendo que se muestre ese mensaje
.
Alguien sabe como resolverlo?
Gracias profesora, considero que sería muy bueno hacer aún más accesible su aportación.
Pudiéramos detectar el error y mandarlo directamente el Input correspondiente y al momento de enviarlo y que todo sea correcto, enviar el foco al mensaje de enviado, que yo lo situaría debajo del formulario, para yo como usuario saber siempre que lo hice bien, por que quizá el tiempo de espera del mensaje es muy corto.
EDIT: Se resuelve en la siguiente clase, no se lo pierdan.
Me sorprende su pronunciación en ingles :O
Para que un formulario sea realmente accesible, necesitas tres pilares fundamentales: instrucciones claras que expliquen el propósito del formulario, etiquetas semánticas (como <label>) que vinculen cada campo con su descripción, y validación explícita que informe al usuario sobre errores sin depender únicamente del color.
Primero, se agrega un párrafo con instrucciones debajo del encabezado del formulario para explicar al usuario para qué sirve y cómo usarlo. Esto ayuda a que el formulario sea más claro y fácil de entender.
Luego, se reemplazan algunos elementos por etiquetas label, que son más semánticas y mejoran la accesibilidad, ya que asocian correctamente los textos con los campos del formulario.
Después, se agrega una validación con JavaScript.
Se le asigna un id al campo de nombre y se crea un elemento span para mostrar mensajes de error. Cuando el usuario intenta enviar el formulario:
Si el campo está vacío, se evita que la página se recargue.
Se muestra un mensaje indicando que el nombre es obligatorio.
Si el campo tiene contenido, se muestra la notificación de envío exitoso.
También se ajustan estilos en CSS para que el mensaje de error tenga buen contraste y no dependa únicamente del color para comunicar significado, cumpliendo buenas prácticas de accesibilidad.
Finalmente, cuando el formulario se envía correctamente:
Se limpia el campo de nombre.
Se borra el mensaje de error.
Se mejora el contraste del mensaje de notificación.
En conclusión, el formulario queda más claro, accesible y amigable, porque guía al usuario, valida errores y permite corregirlos fácilmente.
7:53 Yo pensé que usar IDs en CSS era algo que deberíamos evitar. Siendo que hay pocos
span en la página, ¿no deberíamos usar el elemento como selector?
No es que yo sepa más que la profe, pero lo vi en otros cursos de Platzi.
¡Hola!
No es algo que debes evitar, pero sí es recomendable que uses clases antes que los ids. Depende de lo que quieras hacer.
Muchas gracias
Como hacer que el mensaje de éxito sea leído por un lector de pantalla, para que el usuario sepa que su acción tuvo éxito?
Muchas gracias Kevin, se ve muy util la API, voy a estar practicando con ella, también en la siguiente clase explican como hacer esa interacción con aria-live.
Saludos! 🙋🏿♂️
Hoy en dia, es mas accesible utilizar las validaciones nativas de HTML5? o es recomendado usar mensajes personalizados con spans?
Las validaciones nativas de HTML5 son importantes, aunque la gran mayoría del tiempo suele ser más útil hacer validaciones con JavaScript :D
Las validaciones nativas de HTML5 son muy eficientes pero puede que navegadores viejos no las soporten. Ten eso en cuenta.