Introdução
Formulários coletam informações e dados a serem processados.É difícil o
entendimento dos aspectos de acessibilidade relacionados aos
formulários.
Conteúdos estáticos do site serão facilmente visualizados e
entendidos por usuários de leitores de tela ou até mesmo, talvez, por um
computador Braille se cosiderarmos que você usou uma marcação semântica
e bem estruturada (tal como h1 -
h6 para cabeçalhos). Ler ou deixar de ler um conteúdo
estático no site é uma atitute passiva do visitante, mas ao encontrar um
formulário o usuário quer interagir com ele e de repente
muda-se um campo - é uma via de duplo sentido. Para formulários, a
marcação torna-se crucial para a correta captura de informações do
usuário.Elementos HTML usados
Os elementos HTML usados para marcação de formulários são:- O elemento
(o "container" para os elementos a seguir); - podem ser de variados tipos como: texts, submit, button, radio button e checkbox;- para entrada de textos multi-linhas, tais como comentários;- e o elemento
- também conhecido como drop-down-list, ou pull-down menu (à sua preferência);
Existe também o elemento , que vem sendo pouco usado ultimamente.
Estes elementos são renderizados e têm um comportamento semelhante em diferentes browsers (GUI-based). Pode haver algumas diferenças de estilização, mas essencialmente um campo de texto se parece com um campo de texto e uma drop-down-list cumpre a finalidade de uma drop-down-list. Teoricamente a interação com formulários deveria ser fácil para qualquer um, independente do dispositivo ou browser usado.
Fundamentos do layout
Quando você lê o título de um artigo no jornal, fica sabendo que o texto que se segue diz respeito àquele título, assim como, o texto que aparece embaixo de uma foto, é a descrição da foto. Por vezes um layout de página não segue padrões e em consequência você encontra dificuldade em entender o que se passa - duas fotos sendo uma ao lado da outra com um texto entre elas, OK você é inteligente e vai acabar descobrindo a que foto se refere o texto.
Para formulários existem alguns consagrados princípios CHI (Computer-Human Interaction - Interação Computador-Humano) que funcionam de modo análogo ao jornal, isto é, formulários serão bem mais fáceis de se usar se projetados conforme determinados princípios de uso. Por isto tecnologias assistivas, tais como leitores de tela, seguem àqueles princípios quando interpretam formulários em páginas web. Assim, ao encontrar um campo "text input", os leitores de tela esperam que o texto descritivo daquele "text input" esteja antes do campo... e é ali, antes do campo que o leitor vai procurar a descrição! Então, se o leitor de tela encontra algo como abaixo, ele vai ter dificuldade em interpretar o formulário:
- Entre seu primeiro nome
- Entre seu sobrenome
Dificuldade por quê? Porque o leitor de tela poderá associar incorretamente o segundo input com a primeira linha de texto como mostrado abaixo:
<-- Entre seu sobrenome

Esta é a receita para o desastre. Mas, quem foi que colocou o texto depois do campo? Bem, para alguns tipos de input isto é absolutamente correto:
Please call me at home
Please call me at work
Siga as recomendações abaixo e os seus formulários serão automaticamente mais acessíveis pois é desta forma que os dispositivos adaptados esperam que eles sejam::
| Elemento e tipo HTML | Sequência no layout | Exemplo | ||||
|---|---|---|---|---|---|---|
| input type="text" | Rótulo descritivo, Elemento HTML | Your First Name |
||||
| input type="password" | Rótulo descritivo, Elemento HTML | Your Passnumber |
||||
| input type="button" | Não se aplica (usar atributo) | |
||||
| input type="submit" | Não se aplica (usar atributo) | |
||||
| input type="radio" | Elemento HTML, Rótulo descritivo | Yes,
I am married |
||||
| input type="checkbox" | Elemento HTML, Rótulo descritivo | Subscribe to the newsletter |
||||
| select | Rótulo descritivo, Elemento HTML |
|
||||
| textarea | Rótulo descritivo, Elemento HTML | Your comments
button Não se aplica (usar atributo) Mas , e a acessibilidade?O quê? Oh sim, nada se disse sobre as "tags de acessibilidade". Acredite em nós, seguindo as diretrizes acima e construindo seus formulários de acordo com os princípios CHI, eles serão mais acessíveis ecumprirão melhor sua finalidade. Até aqui mostramos as boas práticas e como manter as coisas simples e sem complicações (aprofundaremos neste fundamento mais adiante). E, com o propósito de manter as coisas simples, devemos considerar como usar (ou não usar) scripts para construir formulários mais acessíveis.ScriptsConsidere que scripts estão desabilitados no lado do usuárioUm formulário deve cumprir sua finalidade independentemente de scripts estarem ou não habilitados no browser (ainda que eles suportem scripts - lembre-se que alguns dispositivos adaptados não suportam scripts). Validação e manipulação de dados no lado do servidor possibilita o funcionamento de formulários independentemente de scripts no lado do usuário. Muitos desenvolvedores ainda se utilizam largamente de scripts no lado do cliente para validação, ou mesmo disparadores de eventos (observe a seguir um formulário, cujo funcionamento é totalmente dependente de scripts estarem habilitados no lado do usuário:
e uma maneira alternativa não dependente de scripts que cumpre a mesma finalidade:
Assegure-se de que seu formulário funciona com scripts desabilitados - entregue a tarefa ao servidor!Evite usar JavaScript para navegaçãoPor outro lado quais as implicações de se usar JavaScript que desencadeia no formulário uma ação fora do controle do usuário? O exemplo clássico ocorre com um elemento de formulário do tipo "drop-down-list" usado como ferramenta para navegação. Muitos sites utilizam este recurso que consiste em ao usuário selecionar um item do menu, automaticamente abre-se a página selecionada. Para usuários impossibilitados de usar mouse (pessoas cegas navegando com leitores de tela, pessoas com restrições motoras e outros casos mais) o uso do menu torna-se muito difícil (ou mesmo impossível).Usar o teclado para tentar selecionar as opções da lista não terá efeito, pois resultará sempre em seleção e ativação do primeiro item da lista. A tentativa de encontrar uma solução inteligente resultou em uma armadilha para a acessibilidade. Mantenha as coisas simples - use uma lista "drop-down-list" sempre que assim desejar, mas forneça um botão "Go" (Ir) para o usuário ativar sua seleção, conforme mostrado abaixo: Uma observação sobre tabelasUma outra questão envolvendo a acessibilidade em formulários, diz respeito ao uso de tabelas para se conseguir um layout alinhado e certinho. Esta prática não implica necessariamente em um problema de acessibilidade, mas poderá vir a causar problemas - um layout de formulário baseado em tabela é irrelevante para um leitor de tela, o conteúdo é lido na ordem em que foi escrito no código fonte. Se você dispor seu layout de formulário, agrupando os rótulos descritivos e os controles do formulário você "quebrará" o relacionamento entre eles. Isto pelo fato de que leitores de tela ' linearizam' as tabelas e interpretarão erroneamente o formulário, conforme exemplo mostrado na imagem a seguir:Para que serve a tag label?O elementoLABEL funciona como uma espécie de indicador
de caminho a seguir. Ele diz ao agente de usuário: "Hey,
você está vendo aquele campo ali? Aquele de nome 'firstname'? Bem,
aquele campo é meu, e, por favor não não faça confusão com ele nem
comigo. Ou, em código XHTML seria assim:Isto cria um inconfundível relacionamento entre o texto (rótulo descritivo) e o campo, relacionamento este que só será quebrado se você introduzir erro na marcação do código (notadamente quando aplicada a técnica de copiar-colar um código pronto e depois esquecer-se de mudar alguma id - lembre-se ids devem ser únicas, você não pode ter mais de um elemento em uma página com a mesma id). Se for de sua conveniência, agora você pode alterar a ordem entre texto e campo sem causar confusão para os dispositivos adaptados, pois eles continuarão a entender qual texto refere-se a que campo: O uso do elemento LABEL acrescenta um benefício adicional não tão óbvio a primeira vista - muitos browsers renderizam o conteúdo da tag como uma área clicável para levar o foco para o campo relacionado. Isto é particularmente útil para checkboxes
e radio buttons que têm uma área reduzida de seleção:Onde posso usar Label?A tag pode ser usada para todos os
elementos de formulário, exceto para os elementos buttons (seu
funcionamento independe de links externos). Abaixo uma tabela
exemplificando o uso da tag:
id="txtFirstName" value=""> Age: Age:value="Under30"> Under 30 id="radAge4_1" value="Over30"> Over 30 What colours do you like: What colors do you like:value="red"> red id="chk1_1" value="green"> green id="chk2_2" value="blue"> blue id="chk3_3" value="purple"> purple Your
life story:Favorite
Town:> Agrupando elementos do formulárioVocê já tinha ouvido falar de
e ?
Não? Então deixe-me apresentá-los à você...O elemento FieldsetImagine uma lista de 50 checkboxes com opções de variados assuntos no qual você tenha que examinar todos, para escolher o(s) que interessa(am). Eu não ficaria aborrecido - e você?Tem um ditado que diz: "Dividir para vencer'', e temos um amigo no XHTML, o elemento FIELDSET.
Usando FIELDSET você divide seus 50 itens, em digamos, 5
grupos de tópicos claramente identificáveis, cada um deles com 10
propriedades/atributos comuns. Você incrementa a
usabilidade/acessibilidade fazendo sua página mais clara para usuários
com deficiências visuais, ou usuários com restrições cognitivas. Leitores de tela, quando oferecem suporte para este elemento, o fazem ainda de maneira precária, tornando questionável sua utilidade para usuários cegos. Contudo, o fato de ainda não haver total suporte para este elemento em dispositivos adaptados, não é justificativa para não empregá-los. Ao contrário, as boas práticas aconselham seu emprego desde já e com vistas ao futuro quando houver pleno suporte. Abaixo um exemplo do emprego de FIELDSET (em conjunto com LEGEND
- que vem a ser o texto 'My Radio Buttons' descritivo do conteúdo da caixa (ou seja, do fieldset):O código de marcação do exemplo acima é:
Como acontece com a maioria dos elementos HTML, você pode usar CSS para estilizar FIELDSET de acordo com suas preferências, como o exemplo mostrado na figura abaixo:FIELDSET pode ser usado para agrupar qualquer variedade de elementos input
de formulários - e não um agrupamento único como mostrado acima. É
perfeitamente legal usar fieldsets aninhados sempre que necessário, como
mostrado na figura (um formulário bem simples) abaixo:O elemento OptgroupDa mesma forma como você pode agrupar inputs de um formulário, pode também agrupar as opções de uma tag usando a tag . Observe o código de marcação abaixo: Você percebeu como foi escrito o código acima? A lista do tipo "drop-down list" foi agrupada por tipos de alimentos. Alguns browsers renderizam corretamente o elemento optgroup e outros simplesmente o ignoram. Mas, assim como ocorre com fieldset, a falta de suporte por alguns browsers e dispositivos adaptados, não é justificativa para não usá-lo. Obs: não confunda a tag com o atributo label (usado na tag ) !Usando um mouse é muito fácil saber onde você está em uma página web. E, isto torna-se muito mais fácil se você aumentar visualmente o tamanho do cursor e habilitar o "mouse trails" (se esta facilidade estiver disponível no seu Sistema Operacional). Se você não tiver restrições visuais mas não for capaz de usar um mouse, por um motivo qualquer, terá que valer-se de um teclado para navegar e neste caso não terá qualquer tipo de aviso sonoro, como os de leitores de tela, para informá-lo onde você está na página Web. Em alguns casos será difícil distinguir visualmente onde se encontra o foco na tela. Os browsers devem renderizar uma linha pontilhada ao redor do elemento de formulário que recebe o foco, mas você poderá tornar este destaque para o foco bem mais fácil de ser visualizado... Em Cascading Style Sheets Level 2 (CSS2), existe a pseudo propriedade focus
que pode ser aplicada a qualquer elemento HTML, mas é particularmente eficaz quando empregada em formulários.
Não é amplamente suportada por todos os browsers, mas funciona nos brownsers Mozilla. A regra CSS a seguir:
... resulta em um excelente indicador visual do local onde você está a
medida que se desloca pelos do formulário, tornando-o muito mais fácil
de usar e interagir com qualquer um que tenha restrições motoras:Accesskeys nos campos Inputs e os LabelsUma accesskey (NT: atalho de teclado ) é teoricamente uma eficaz ferramenta de acessibilidade a ser usada em web sites. Lamentavelmente, neste caso, na prática a teoria não funciona. A teoria é simples - você escolhe um atalho de teclado para cada um dos elementos do formulário, possibilitando assim, um acesso rápido ao elemento. Por exemplo, para um campo de busca localizado no topo da página decidimos escolher a letra 's' como accesskey.accesskey="s"/> Na prática, os diversos browsers e dispositivos especiais de usuários, se utilizam de accesskey para navegação. Consequentemente, se você deseja usar accesskey="f"
para um campo de formulário a ser preenchido com o primeiro nome do
usuário, o accesskey simplesmente não vai funcionar como você espera.
Por que? Porque ao pressionar alt + f (alt normalmente é usado em
conjunto com a letra para ativar o accesskey) você trará para a tela o
menu file (arquivo) do seu browser.Você pode aplicar o accesskey tanto ao elemento
como ao elemento . O problema é que não há
como o usuário saber que estamos usando um accesskey (somente o browser
iCab fornece uma dica da existência do accesskey). Uma maneira
sugerida para prover uma informação visual da existência do acesskey é
adotar a técnica usada em aplicações Windows (conhecida como 'chave
aceleradora'), que consiste em sublinhar a letra que representa o
acesskey: E, estabeleça uma regra para a classe accelerator que coloque um efeito sublinhado (não se limite a usar simplesmente a tag para destacar o acesskey!)..accelerator {text-decoration:underline;}Mensagens de errosVárias são as maneiras de se tratar os erros cometidos pelo usuário ao preencher um formulário.
mensagens de erros no lado do clienteVamos supor que o browser está com Javascript habilitado (caso contrário vá para o título seguinte: MENSAGENS DE ERROS NO LADO DO SERVIDOR). Neste caso existem vários scripts que detectam e tratam erros de preenchimento, mas o detalhamento e estudo de scripts está fora do escopo deste artigo. Alguns caminhos criados pelos scripts são mais acessíveis que outros e isto veremos a seguir.Frequentemente usa-se JavaScript para validar formulários de modo a que todos os erros cometidos sejam coletados e apresentados ao usuário em um grande alerta único, como mostrado abaixo: Agora, considere receber de uma só vez está quantidade de erros ou talvez até uma lista maior ainda quer visualmente na tela, quer sendo lida por um leitor de tela. Irritante não é mesmo? Mas, então o que fazer? Um método melhor seria alertar o usuário a medida que o erro for detectado e encaminhá-lo de volta ao campo preenchido incorretamente para ser corrigido e assim por diante um a um para todos os campos validados. Com JavaScript habilitado, você pode valer-se dele para fazer voltar o foco ao campo preenchido incorretamente e talvez até adicionar algum texto default ao campo bem como selecioná-lo: document.forms['"personaldetails"].fullname.value="Please
enter your full name";Você poderá ainda usar JavaScript para destacar o campo, incrementando a acessibilidade para pessoas não completamente privadas de visão, mas com alguma necessidade visual. Quem sabe uma borda em negrito ao redor do campo? Ou, talvez um cor contrastante para fundo do campo? Alguns dirão que este método é repetitivo e enfadonho, quando um número considerável de erros é cometido. Na verdade, para alguns usuários, este método pode tornar-se uma grande dor de cabeça, mas você deverá fazer uma análise e julgamento de quanto a acessibilidade está trabalhando contra a usabilidade, considerando principalmente seu público. mensagens de erros no lado do SERVIDORUma vez processado um formulário e encontrado erros de preenchimento, o método usual é o de apresentar-se no topo de uma página, um sumário dos erros encontrados destacando-se os locais onde encontrados os erros. Este método parece OK, contudo se pensarmos em um leitor de tela a informação dos erros não será tão óbvia. ("O que houve? Eu enviei o formulário e recebi de volta a mesma página? O que está acontecendo?...".Um "truque" bem simples - Coloque um alerta no campo
da página (normalmente o primeiro texto que um leitor de tela lê ao
entrar numa página), e repita o alerta no primeiro nível de cabeçalho da
página.
Referência: http://maujor.com/tutorial/formac-a.php
Assinar:
Comentários (Atom)
|
Nenhum comentário:
Postar um comentário