Do ponto de vista técnico, são completamente diferentes. <datalist>é um contêiner abstrato de opções para outros elementos. No seu caso, você o usou, <input type="text"mas também pode usá-lo com intervalos, cores, datas etc. http://demo.agektmr.com/datalist/
Se você usá-lo com entrada de texto, como um tipo de preenchimento automático, a questão é: É melhor usar uma entrada de texto de formato livre ou uma lista predeterminada de opções? Nesse caso, acho que a resposta é um pouco mais óbvia.
Se focarmos no uso de <datalist>como uma lista de opções para um campo de texto, aqui estão algumas diferenças específicas entre isso e uma caixa de seleção:
- Uma
<datalist>caixa de texto alimentada possui uma única sequência para o rótulo de exibição e o envio. Uma caixa de seleção pode ter um valor de envio diferente e um rótulo de exibição <option value='ie'>Internet Explorer</option>.
- Uma
<datalist>caixa de texto alimentada não suporta a <optgroup>marca para organizar a exibição.
- Você não pode restringir um usuário à lista de opções da
<datalist>mesma forma que pode com a <select>.
- O evento onchange funciona de maneira diferente. Em um
<select>elemento, o evento onchange é acionado imediatamente após a alteração, enquanto que com <input type="text"o evento é acionado após o elemento perder o foco ou o usuário pressionar Enter.
<datalist>tem um suporte realmente irregular nos navegadores. A maneira de mostrar todas as opções disponíveis é inconsistente e as coisas só pioram a partir daí.
O último ponto é realmente o grande na minha opinião. Como você precisará ter um fallback de preenchimento automático mais universal, quase não há razão para enfrentar o problema de configurar a <datalist>. Além disso, qualquer plug-in de preenchimento automático decente permitirá maneiras de estilizar a exibição de suas opções, o que <datalist>não funciona. Se os elementos <datalist>aceitos <li>que você pudesse manipular como quisesse, teria sido realmente ótimo! Mas não.
Também na medida em que posso dizer, a <datalist>pesquisa é uma correspondência exata desde o início da string. Então, se você tivesse <option value="internet explorer">e pesquisou 'explorer', não obteria resultados. A maioria dos plugins de preenchimento automático pesquisará em qualquer lugar do texto.
Usei apenas <datalist>como um auxiliar de conveniência rápido e preguiçoso para algumas páginas internas nas quais sei com 100% de certeza que os usuários têm o Chrome ou Firefox mais recente e não tentam enviar valores falsos. Para qualquer outro caso, é difícil recomendar o uso <datalist>devido ao suporte insuficiente ao navegador.