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
- Tocar no botão de envio permite validar o formulário.
- Tocar no 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, 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. - 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.
- Evitar anunciar a mesma mensagem simultaneamente pelo foco e por várias regiões
aria-live.
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.
Referências
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.