2023-12-20 09:28:38 +00:00
|
|
|
const searchInputEl = document.getElementById("search-input");
|
2023-12-20 23:45:16 +00:00
|
|
|
|
|
|
|
// add a datalist after the search input
|
2023-12-20 09:28:38 +00:00
|
|
|
const datalistEl = document.createElement("datalist");
|
|
|
|
datalistEl.id = "search-input-datalist";
|
|
|
|
searchInputEl.setAttribute("list", datalistEl.id);
|
|
|
|
searchInputEl.insertAdjacentElement("afterend", datalistEl);
|
|
|
|
|
|
|
|
// update the datalist options on input
|
|
|
|
searchInputEl.addEventListener("input", async (e) => {
|
|
|
|
const value = e.target.value;
|
|
|
|
|
2023-12-20 23:17:46 +00:00
|
|
|
const res = await fetch(`/autocomplete?q=${encodeURIComponent(value)}`).then(
|
|
|
|
(res) => res.json()
|
|
|
|
);
|
2023-12-20 09:28:38 +00:00
|
|
|
const options = res[1];
|
|
|
|
|
|
|
|
datalistEl.innerHTML = "";
|
|
|
|
options.forEach((option) => {
|
|
|
|
const optionEl = document.createElement("option");
|
|
|
|
optionEl.value = option;
|
|
|
|
datalistEl.appendChild(optionEl);
|
|
|
|
});
|
|
|
|
});
|