Viendo varios hilos de este subforo pidiendo ayuda para montar un autocompletar a mano (con AJAX + un endpoint que devuelve coincidencias), me pregunto si hoy sigue teniendo sentido hacerlo así o si directamente se usa una librería siempre.
Entiendo que para casos muy simples (una lista corta, sin necesidad de consultar servidor) un <datalist> de HTML resuelve la mayoría de casos sin una línea de JS. Pero en cuanto necesitas buscar contra una base de datos grande, con debounce para no disparar una petición por cada tecla, resaltado de coincidencias, navegación con teclado... ahí ya empieza a compensar tirar de algo hecho.
¿Montáis el autocompletar a mano cuando el caso lo permite, o directamente vais siempre a una librería (Awesomplete, Choices.js, o lo que sea que esté de moda ahora) aunque sea para algo sencillo, solo para no reinventar la rueda?
Nuria
Depende mucho de qué tan simple sea el caso real. Si la lista de opciones es corta y estática (por ejemplo, un selector de país o de categoría con 50 valores fijos), el <datalist> nativo de HTML resuelve el 90% de la necesidad sin escribir una sola línea de JavaScript, y encima funciona con teclado de forma nativa sin que tengas que programar tú la navegación con flechas.
Donde montarlo a mano empieza a compensar menos es en cuanto necesitas: buscar contra una base de datos grande vía AJAX (con debounce para no disparar una petición por cada tecla), resaltar coincidencias dentro del texto sugerido, manejar accesibilidad correctamente (roles ARIA para que un lector de pantalla entienda que es un combo de autocompletar, no un campo de texto normal), o un diseño visual muy específico del desplegable de sugerencias que <datalist> no te deja personalizar (su estilo depende del navegador, casi sin margen de personalización CSS).
En ese punto, para mí ya no compensa reinventar todo eso desde cero: una librería ligera (Awesomplete es de las más pequeñas, sin dependencias) te da todo eso ya resuelto y probado, y el tiempo que ahorras en depurar tu propia implementación de teclado + accesibilidad + estilos suele compensar de sobra el peso añadido de la librería.
Ruben