Explore os comportamentos antes de definir a interface.
Guia rápido para designers
Sempre avalie o contexto da aplicação, mesmo com a orientação tendo um padrão. Design de interação documenta a intenção. O funcionamento deve ser verificado na implementação.
Quando usar
Use para explicar problemas de preenchimento e orientar a correção. Falhas de serviço precisam de mensagens próprias.
O que desenhar
Mostre instruções, erro junto ao campo e resumo com links quando adequado. Explique a correção em texto, além de cor ou ícone.
Como se comporta
Preserve os valores após um envio inválido. Links do resumo levam ao campo. Não mostre erros antes de a pessoa ter oportunidade de preencher.
O que documentar no Figma
Defina quando validar, o destino de foco após envio inválido e os anúncios. Em verificações assíncronas, considere o valor atual e evite respostas antigas.
Como revisar
Confira se o objetivo e os estados são claros em telas pequenas e grandes, com ampliação. Verifique os comportamentos documentados na implementação, incluindo teclado e leitor de telas quando aplicáveis.
Orientações completas
Design de Interação
Questionamentos que devem ser feitos ao projetar mensagens de validação de formulários.
Avalie cada orientação conforme o contexto. A validação informa problemas na entrada e orienta a correção; falhas do serviço exigem mensagens próprias.
Projetando para a "não interação"
- As instruções, formatos esperados e campos obrigatórios estão claros antes de preencher?
- A mensagem identifica o campo, explica o problema e informa como corrigir, sem culpar a pessoa?
- Os erros são identificáveis por texto, além de cor ou ícone?
- Foi definido quando validar: no envio, ao sair do campo ou durante uma verificação específica? Evita-se mostrar erro antes de a pessoa ter oportunidade de preencher?
Projetando para uso com mouse
- A mensagem permanece perto do campo e disponível enquanto houver erro?
- Se houver resumo de erros, seus links levam ao campo correspondente?
Projetando para uso com gestos
- É possível ler a mensagem e corrigir o campo mesmo com o teclado virtual aberto ou com ampliação?
- Os links do resumo possuem área de toque adequada?
Projetando para uso com teclado
- Após um envio inválido, há um destino de foco previsível, como o resumo de erros ou o primeiro campo inválido?
- Os links do resumo podem ser percorridos com
Tabe acionados comEnter? - Validar durante a edição preserva o foco e não impede a digitação?
Projetando para uso com leitor de telas
- A mensagem está associada ao campo e o estado inválido é identificado?
- Os erros novos são comunicados sem repetição excessiva ou leitura a cada tecla?
- O resumo tem um título claro e links com nomes que identificam os problemas?
Métodos de Interação
Interação com mouse
- Ao enviar dados inválidos, apresentar mensagens específicas junto aos campos e, quando adequado, um resumo com links para correção.
- Clicar em um link do resumo leva ao campo correspondente na mesma página e posiciona o foco para corrigi-lo.
- Preservar os dados preenchidos, inclusive os que precisam de correção.
Interação com teclado
TabeShift + Tabpercorrem campos, botão de envio e links do resumo na ordem da interface.EnterouBarra de espaçoativa o botão de envio;Enterativa os links do resumo.- Após um envio rejeitado, posicionar o foco no resumo ou no primeiro campo inválido, conforme o padrão escolhido.
- Durante validações ao sair do campo ou durante a edição, manter o fluxo de foco e a entrada de texto.
Interação com gestos
Tocarno botão de envio permite validar o formulário.Tocarno link do resumo leva ao campo; a mensagem continua disponível para consulta e correção.
Interação com teclado (ou gestos) + leitor de telas
- Ao navegar até um campo inválido com leitor de telas, a pessoa identifica seu rótulo, erro e orientação de correção.
- Após corrigir um campo e executar a validação prevista, a pessoa percebe se o erro foi resolvido ou continua presente.
- Se o foco for movido para um resumo, permitir a leitura de seu título, erros e links. Se o foco permanecer onde estava, anunciar erros dinâmicos com uma região de atualização adequada ao contexto.
- Ao receber o retorno da validação com leitor de telas, a pessoa identifica a mensagem sem várias repetições simultâneas do mesmo erro.
Correção e novo envio
- Após uma correção confirmada, remover ou atualizar a mensagem e a entrada correspondente no resumo, sem apagar outros erros.
- Enviar novamente executa a validação necessária; somente confirmar sucesso depois que a operação for concluída.
- Em verificações assíncronas, informar o andamento e evitar que respostas antigas substituam o resultado do valor atual.
Gherkin
Metodologia BDD (Behavior-Driven Development ou Desenvolvimento Orientado ao Comportamento) com foco em 3 pilares: Histórias de Usuário, Critérios de Aceite e Sintaxes Gherkin (Dado (Given), Quando (When), Então (Then)).
Cenário: Considerando que estou em uma página que contém um formulário com validação
Navegação por teclado
- QUANDO uso
Tabpara mover o foco até o botão de envio - O foco que VEJO é fortemente indicado visualmente
- ENTÃO, quando uso
EnterouBarra de espaçopara enviar dados inválidos - VEJO mensagens que identificam os campos com erro e explicam como corrigir
- E percebo que o foco foi direcionado ao resumo ou ao primeiro campo inválido, conforme o padrão definido
- QUANDO uso
Tabpara focar um link do resumo eEnterpara ativá-lo - VEJO que o foco chega ao campo correspondente na mesma página e posso corrigi-lo
Leitor de telas para desktop
- QUANDO uso um leitor de tela no computador (NVDA, JAWS, VoiceOver) e envio um formulário com dados inválidos
- OUÇO ou percebo que o envio não foi concluído e que existem erros a corrigir
- ENTÃO, quando uso
Tabpara navegar até um campo inválido - OUÇO o rótulo, a indicação de erro e a orientação de correção
- E, quando uso
Enterpara ativar um link do resumo, percebo que cheguei ao campo correspondente - OUÇO ou percebo as mensagens sem anúncios duplicados desnecessários
Leitor de telas para dispositivos móveis
- QUANDO uso um leitor de tela no celular (Talkback, VoiceOver) e envio um formulário com dados inválidos
- OUÇO ou percebo que o envio não foi concluído e que existem erros a corrigir
- ENTÃO, quando deslizo o dedo para navegar até um campo inválido
- OUÇO o rótulo, a indicação de erro e a orientação de correção
- E, quando toco duas vezes ou uso o gesto adequado para ativar um link do resumo, percebo que cheguei ao campo correspondente
- OUÇO ou percebo as mensagens sem anúncios duplicados desnecessários
Correção e novo envio
- QUANDO corrijo um campo e a nova validação confirma a correção
- VEJO que a mensagem e o estado inválido daquele campo são atualizados, preservando os outros erros e os valores preenchidos
- ENTÃO, quando envio o formulário com todas as entradas válidas
- VEJO ou OUÇO a confirmação somente depois que a operação for concluída
Validação durante a edição
- QUANDO uma validação ocorre ao sair de um campo ou durante uma verificação específica
- VEJO ou OUÇO uma mensagem no momento definido, sem erro prematuro antes de preencher
- E percebo que o foco e a digitação não foram interrompidos
Pontos de atenção
- Preferir mensagens concretas, como "Informe um e-mail no formato nome@exemplo.com", em vez de apenas "Valor inválido".
- Distinguir campo vazio obrigatório, formato incorreto e regra de negócio. Não tratar uma falha de conexão ou indisponibilidade do serviço como erro de preenchimento.
- Não depender apenas de bordas vermelhas, ícones ou mensagens temporárias. Manter a orientação até que a correção seja confirmada.
- Associar o erro ao campo com
aria-describedbye manter as instruções existentes nessa associação. Usararia-invalidapenas quando o erro for detectado. - O resumo complementa as mensagens junto aos campos. Seus links devem indicar para leitores de tela que levam ao campo na mesma página e mover o foco para o destino adequado.
- Escolher entre o anúncio pelo foco e uma região dinâmica conforme o fluxo. Usar
role="alert"apenas quando a urgência justificar;role="status"pode servir para atualizações não urgentes. Evitar anúncios a cada tecla. - Preservar valores após um envio inválido. Não incluir senhas ou outros dados sensíveis no resumo ou em mensagens de estado.
- A validação no cliente ajuda a orientar, mas a validação no servidor continua necessária. Verificações assíncronas devem considerar o valor atual e informar falhas da verificação.
- Não desabilitar o botão de envio como única forma de indicar problemas: a pessoa precisa saber o que falta e como corrigir.
- Se usar ícones complementares, preferir Material Icons e ocultar os decorativos das tecnologias assistivas; a informação deve continuar disponível em texto.
- Bootstrap informa limitações de acessibilidade nos estilos personalizados de validação do cliente e tooltips. Avaliar os exemplos antes de adotá-los; cores e estilos não garantem associação ou anúncio acessível.
Notas de implementação e decisões de comportamento
- Ao navegar até um campo inválido, apresentar rótulo, indicação de erro e mensagem associada por
aria-describedby, preservando também a associação com as instruções.
- Usar
aria-invalidpara indicar erro detectado; atualizar o estado quando o erro for corrigido e a nova validação confirmar a correção.
- Evitar anunciar a mesma mensagem simultaneamente pelo foco e por várias regiões
aria-live.
Referências
Referências adicionais sobre componentes do tipo Validação de formulários.
Importante:
A maior parte das referências estão na plataforma do curso junto com as aulas citadas neste material.
Isenção de responsabilidade:
Os links indicados aqui não são recomendações, mas apenas uma curadoria de referências onde você pode encontrar componentes construídos. É importante ressaltar que não há uma unificação nos formatos de construção e não há garantias de que os links mencionados aqui cumpram todos os padrões de design. Dúvidas devem ser direcionadas para as respectivas equipes envolvidas nas construções dos materiais indicados. Antes de "copiar" algum modelo apresentado, leve em consideração que todos os materiais são atualizados constantemente e que os padrões (principalmente proprietários) podem sofrer alterações.
Padrões de Design
- W3C WAI — User Notification open_in_new (link externo, abre em uma nova aba) — Erros, notificações e retorno após envio de formulários.
Design System
- GOV.UK — Error message open_in_new (link externo, abre em uma nova aba) — Mensagens associadas aos campos e orientações de correção.
- GOV.UK — Error summary open_in_new (link externo, abre em uma nova aba) — Resumo de erros, links para os campos e gerenciamento de foco.
- USWDS — Validation open_in_new (link externo, abre em uma nova aba) — Validação e retorno sobre requisitos de entrada.
- Bootstrap — Validation open_in_new (link externo, abre em uma nova aba) — Exemplos de validação e limitações de acessibilidade documentadas.