D'un point de vue technique, ils sont complètement différents. <datalist>
est un conteneur abstrait d'options pour d'autres éléments. Dans votre cas, vous l'avez utilisé avec <input type="text"
mais vous pouvez également l'utiliser avec des plages, des couleurs, des dates, etc. http://demo.agektmr.com/datalist/
Si vous l'utilisez avec la saisie de texte, en tant que type de saisie semi-automatique, la question est vraiment la suivante: vaut-il mieux utiliser une saisie de texte de forme libre ou une liste d'options prédéterminée? Dans ce cas, je pense que la réponse est un peu plus évidente.
Si nous nous concentrons sur l'utilisation de <datalist>
comme liste d'options pour un champ de texte, voici quelques différences spécifiques entre cela et une zone de sélection:
- Une zone de
<datalist>
texte alimentée a une seule chaîne pour le libellé d'affichage et l'envoi. Une boîte de sélection peut avoir une valeur d'envoi différente de l'étiquette d'affichage <option value='ie'>Internet Explorer</option>
.
- Une zone de
<datalist>
texte alimentée ne prend pas en charge la <optgroup>
balise pour organiser l'affichage.
- Vous ne pouvez pas restreindre un utilisateur à la liste des options
<datalist>
comme vous le pouvez avec un <select>
.
- L' événement onchange fonctionne différemment. Sur un
<select>
élément, l'événement onchange est déclenché immédiatement lors de la modification, tandis qu'avec <input type="text"
l'événement est déclenché après que l'élément perd le focus ou que l'utilisateur appuie sur Entrée.
<datalist>
a un support vraiment irrégulier sur les navigateurs. La façon d'afficher toutes les options disponibles est incohérente et les choses ne font qu'empirer à partir de là.
Le dernier point est vraiment le plus important à mon avis. Étant donné que vous DEVEZ avoir une solution de secours de saisie semi-automatique plus universelle, il n'y a presque aucune raison de se donner la peine de configurer un fichier <datalist>
. De plus, tout branchement de saisie semi-automatique décent permettra de personnaliser l'affichage de vos options, ce qui <datalist>
ne fonctionne pas. Si vous aviez <datalist>
accepté des <li>
éléments que vous pouviez manipuler comme vous le souhaitez, cela aurait été vraiment génial! Mais non.
Aussi, pour autant que je sache, la <datalist>
recherche est une correspondance exacte depuis le début de la chaîne. Donc, si vous aviez <option value="internet explorer">
et que vous recherchiez «explorateur», vous n'obtiendrez aucun résultat. La plupart des plugins à saisie semi-automatique rechercheront n'importe où dans le texte.
Je n'ai utilisé <datalist>
que comme une aide pratique rapide et paresseuse pour certaines pages internes où je sais avec une certitude à 100% que les utilisateurs ont la dernière version de Chrome ou Firefox, et n'essaieront pas de soumettre de fausses valeurs. Dans tous les autres cas, il est difficile de recommander l'utilisation de en <datalist>
raison d'une très mauvaise prise en charge du navigateur.