Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

2
respostas

datalist

No caso de usarmos um <datalist> para popular a lista de estilo musical, as opções são retiradas dos campos value="" das tags <optios> sem fechamento.

Estes mesmos valores serão passados na URL durante o submit.

Sendo assim: Como lidamos com opções que possuem nomes compostos, acentos e/ou caracteres especiais (eletrônica, hard rock, etc...), uma vez que a boa prática nos manda não por acentos, caracteres especiais e nem espaços nos campos value="" ??

Nos meus testes também verifiquei que se usarmos a tag <option> com fechamento e valor literal como em:
<option>sertanejo</option> funcionada mesma forma, com o valor passado normalmente na URL

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
2 respostas

Oi Luis, tudo bem? 😊

Entendo sua dúvida sobre o uso do datalist e como lidar com caracteres especiais e espaços nos valores.

A questão é que o atributo value é o que define o valor que será enviado no formulário.

Se você precisa de um valor diferente para exibição e para o envio, você pode usar o atributo value para o valor "técnico" (sem espaços ou caracteres especiais) e o conteúdo da tag <option> para a exibição.

Por exemplo:

<label for="estilo">Estilo Musical:</label>
<input type="text" id="estilo" name="estilo" list="estilosMusicais">
<datalist id="estilosMusicais">
  <option value="eletronica">Eletrônica</option>
  <option value="hard_rock">Hard Rock</option>
  <option value="sertanejo">Sertanejo</option>
</datalist>

Nesse caso, o usuário verá "Eletrônica", "Hard Rock" e "Sertanejo", mas o valor enviado será "eletronica", "hard_rock" e "sertanejo".

Sobre a tag <option> com fechamento, ela funciona da mesma forma, o que importa é o atributo value.

A boa prática de não usar espaços, acentos e caracteres especiais no value é para evitar problemas com a URL e com o processamento dos dados no servidor. 📖

Espero ter ajudado! 💪

🎓 Para saber mais:

Sua solução não funciona! eu também testei ela. No caso, ficam os dois valores aparecendo... tanto o "valor técnico", quanto do de exibição.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade