Autocompletar e sugestões: datalist e autocomplete
Veja como oferecer sugestões de preenchimento ao usuário de forma nativa, sem depender de JavaScript externo.
Melhorar a experiência do usuário em formulários significa
tornar o preenchimento mais rápido e fácil. O HTML5 nos
oferece duas ferramentas poderosas para isso, sem a
necessidade de JavaScript complexo: a tag <datalist>
para sugestões de preenchimento e o atributo autocomplete
para preenchimento automático de dados do usuário.
A tag <datalist>: sugestões para campos de texto
A tag <datalist> permite que você crie uma lista de
opções pré-definidas que o navegador pode sugerir ao
usuário enquanto ele digita em um campo <input>.
Pense nela como um "autocompletar" que você define.
Como funciona:
- Crie uma tag
<datalist>e dê a ela umidúnico. - Dentro da
<datalist>, adicione várias tags<option>, cada uma com umvalueque será uma sugestão. - No campo
<input>ao qual você quer associar as sugestões, adicione o atributoliste defina seu valor para oidda<datalist>.
Características principais:
- Sugestões, não restrições: O usuário ainda pode digitar
qualquer coisa no campo
<input>, mesmo que não esteja na lista. A<datalist>serve apenas para oferecer sugestões. - Compatibilidade: Funciona com
input type="text",search,url,tel,email. - Acessibilidade: Melhora a usabilidade para todos os usuários, especialmente aqueles com dificuldades de digitação.
Exemplo:
<form>
<label for="navegador">Qual seu navegador favorito?</label><br>
<input type="text" id="navegador" name="navegador_favorito" list="lista_navegadores">
<datalist id="lista_navegadores">
<option value="Chrome">
<option value="Firefox">
<option value="Edge">
<option value="Safari">
<option value="Opera">
</datalist>
<br><br>
<label for="cidade">Cidade de origem:</label><br>
<input type="text" id="cidade" name="cidade_origem" list="lista_cidades">
<datalist id="lista_cidades">
<option value="São Paulo">
<option value="Rio de Janeiro">
<option value="Belo Horizonte">
<option value="Porto Alegre">
<option value="Curitiba">
</datalist>
</form>
O atributo autocomplete: preenchimento automático do navegador
O atributo autocomplete é usado para indicar ao navegador
qual é o tipo de informação que se espera em um campo de formulário.
Com base nisso, o navegador pode oferecer sugestões de preenchimento
automático usando dados que ele já salvou do usuário (ex: nome,
endereço, e-mail, telefone).
Onde usar:
- Pode ser usado na tag
<form>para aplicar a todos os campos (ex:autocomplete="off"para desativar o preenchimento automático para o formulário inteiro). - Pode ser usado em campos
<input>,<textarea>e<select>individualmente para um controle mais granular.
Valores comuns de autocomplete:
Existem muitos valores pré-definidos para autocomplete,
que ajudam o navegador a entender o contexto do campo.
Alguns exemplos:
name: Nome completo.given-name: Primeiro nome.family-name: Sobrenome.email: Endereço de e-mail.tel: Número de telefone.organization: Nome da empresa.street-address: Endereço da rua.postal-code: Código postal.country: País.cc-name: Nome no cartão de crédito.cc-number: Número do cartão de crédito.new-password: Para um novo campo de senha (sugere senhas fortes).current-password: Para um campo de senha existente (preenche a senha salva).off: Desativa o preenchimento automático para aquele campo/formulário.
Exemplo:
<form action="/cadastro" method="post" autocomplete="on">
<fieldset>
<legend>Informações Pessoais</legend>
<label for="nome">Nome Completo:</label><br>
<input type="text" id="nome" name="nome_completo" autocomplete="name" required><br><br>
<label for="email">E-mail:</label><br>
<input type="email" id="email" name="email_contato" autocomplete="email" required><br><br>
<label for="tel">Telefone:</label><br>
<input type="tel" id="tel" name="telefone_contato" autocomplete="tel"><br><br>
</fieldset>
<fieldset>
<legend>Endereço</legend>
<label for="rua">Endereço da Rua:</label><br>
<input type="text" id="rua" name="endereco_rua" autocomplete="street-address" required><br><br>
<label for="cidade">Cidade:</label><br>
<input type="text" id="cidade" name="cidade_residencia" autocomplete="address-level2" required><br><br>
<label for="cep">CEP:</label><br>
<input type="text" id="cep" name="cep_residencia" autocomplete="postal-code" required><br><br>
</fieldset>
<button type="submit">Cadastrar</button>
</form>
Por que usar autocomplete?
- Usabilidade: Torna o preenchimento de formulários muito mais rápido e conveniente para o usuário, especialmente em dispositivos móveis.
- Acessibilidade: Ajuda usuários com dificuldades de digitação.
- Segurança: Com
new-passwordecurrent-password, o navegador pode ajudar a gerenciar senhas de forma mais segura.
Resumindo
<datalist>:- Cria uma lista de sugestões pré-definidas para um campo
<input>. - Conectada ao
<input>pelo atributolist(no<input>) eid(na<datalist>). - O usuário ainda pode digitar qualquer valor, não é uma restrição.
- Cria uma lista de sugestões pré-definidas para um campo
autocomplete(atributo):- Indica ao navegador o tipo de informação esperada em um campo.
- Permite que o navegador ofereça preenchimento automático com dados salvos do usuário.
- Pode ser usado na tag
<form>ou em campos individuais. - Possui diversos valores pré-definidos para diferentes tipos de dados (nome, e-mail, endereço, senha, etc.).
Ambas as ferramentas são excelentes para melhorar a usabilidade e a experiência do usuário em formulários, tornando-os mais eficientes e amigáveis.