La Etiqueta DATALIST

Permite crear listas de sugerencias para campos de entrada "input", ofreciendo opciones predefinidas mientras el usuario escribe.
La etiqueta <datalist>
permite crear listas de sugerencias para campos de entrada (<input>
), ofreciendo opciones predefinidas mientras el usuario escribe. Es ideal para mejorar la usabilidad en formularios con autocompletado.
Sintaxis básica
<input list="lista-opciones"> <datalist id="lista-opciones"> <option value="Opción 1"> <option value="Opción 2"> </datalist>
-
list
(en<input>
) → Vincula el campo con el<datalist>
mediante elid
. -
<option>
→ Define las sugerencias disponibles.
Casos de uso comunes
Búsqueda con sugerencias
<label>Buscar ciudad: <input type="text" list="ciudades"> </label> <datalist id="ciudades"> <option value="Madrid"> <option value="Barcelona"> <option value="Valencia"> </datalist>
Selección de valores numéricos
<label>Edad: <input type="number" list="edades" min="18" max="99"> </label> <datalist id="edades"> <option value="18"> <option value="25"> <option value="30"> </datalist>
Formulario de registro con emails comunes
<label>Correo electrónico: <input type="email" list="dominios"> </label> <datalist id="dominios"> <option value="@gmail.com"> <option value="@hotmail.com"> <option value="@yahoo.com"> </datalist>
Atributos clave
Elemento | Atributo | Descripción |
---|---|---|
<input> |
list |
Vincula con el id del <datalist> |
<option> |
value |
Valor de la sugerencia |
<option> |
label |
Texto alternativo (depende del navegador) |
Ejemplo avanzado: Sugerencias con imágenes (usando CSS y JS)
<input type="text" list="autos" placeholder="Marca de auto"> <datalist id="autos"> <option value="Toyota" data-imagen="toyota.jpg"> <option value="Ford" data-imagen="ford.jpg"> </datalist> <script> document.querySelector('input').addEventListener('input', function(e) { const valor = e.target.value; const opcion = document.querySelector(`option[value="${valor}"]`); if (opcion) { console.log('Imagen asociada:', opcion.dataset.imagen); } }); </script>
Accesibilidad
Lectores de pantalla: Detectan las opciones del <datalist>
.
-
Usar
<label>
asociado al input. -
Añadir instrucciones claras:
<p>Comience a escribir para ver sugerencias</p>
Errores comunes
No vincular correctamente el id
y list
<!-- Incorrecto --> <input list="lista-fallida"> <!-- ID no existe --> <datalist id="lista-correcta">...</datalist>
Usar donde se necesita selección obligatoria
<!-- Incorrecto: Para elegir entre opciones fijas, usa <select> --> <datalist id="paises"> <option value="España"> </datalist> <input list="paises"> <!-- Correcto --> <select> <option>España</option> </select>
Buenas prácticas
-
Ordenar opciones: Mostrar sugerencias alfabéticamente.
-
Usar con
<input type="search">
: Para campos de búsqueda predictiva. -
Cargar opciones dinámicamente (ej: con JavaScript):
fetch('/api/ciudades') .then(res => res.json()) .then(ciudades => { const datalist = document.getElementById('ciudades'); datalist.innerHTML = ciudades.map(ciudad => `<option value="${ciudad.nombre}">` ).join(''); });
Compatibilidad
Navegador | Soporte |
---|---|
Chrome | Sí (v20+) |
Firefox | Sí (v4+) |
Safari | Sí (v12.1+) |
Edge | Sí (v12+) |
Conclusión:
La etiqueta <datalist>
es perfecta para:
- Mejorar la experiencia del usuario con autocompletado inteligente.
- Reducir errores en formularios.
- Ofrecer sugerencias sin limitar la entrada libre.
¡Úsala para crear formularios más intuitivos y eficientes!