Imam slijedeci HTML kod:
<div class="dropdown-content"> <a href="#" class="dropdown-item" data-value="al">alabama</a> <a href="#" class="dropdown-item" data-value="ak">alaska</a> <a href="#" class="dropdown-item" data-value="as">american samoa</a> <a href="#" class="dropdown-item" data-value="az">arizona</a> <a href="#" class="dropdown-item" data-value="ar">arkansas</a> </div>
Koji kreira JS na ovaj nacin:
function(t, n, e) {
"use strict";
e.r(n);
var r = e(3)
, o = e.n(r);
const i = (t,n,e,r,i,u=2)=>{
const a = document.getElementById(t)
, c = document.getElementById(n);
c.innerHTML = '<div class="dropdown-content"></div>';
const l = t=>{
t.preventDefault();
var n = t.target.text
, e = t.target.dataset.value;
return a.value = n,
c.style.display = "none",
r && r({
label: n,
value: e
}),
!1
}
, f = t=>{
const n = t.target.value;
c.style.display = "none",
c.innerHTML = '<div class="dropdown-content"></div>',
n.length <= u || e(n).then(t=>{
t.map(({label: t, value: n})=>{
const e = document.createElement("a");
return e.href = "#",
e.classList.add("dropdown-item"),
e.innerHTML = t,
e.dataset.value = n,
e.addEventListener("click", l),
e
}
).map(t=>{
c.childNodes[0].appendChild(t)
}
),
t.length > 0 && (c.style.display = "block")
}
)
}
;
a.addEventListener("input", o()(f, i)),
a.addEventListener("focusout", t=>{
null !== t.relatedTarget && t.relatedTarget.classList.contains("dropdown-item") || (c.style.display = "none")
}
),
a.addEventListener("focusin", f)
}
;
n.default = i,
window.bulmahead = i
}
To je autocomplete na input form i trebao bi dodati preko JS class na prvi is-active
te zatim ukoliko se ide keybordom up/down mijenja focus i taj is-active.
Klikom na enter ili klik cursorom na odredjeni koji je aktivan da submita.
Radi se o Bulmahead
Probajte utipkati “Ala” u input pa cete vidjeti da nema autofocus na prvi i kretanje kroz iteme u dropdownu putem tipkovnice.
Isprobao sam danas valjda 150 razlicitih scenarija i procitao cijeli internet al nisam uspio doci do rjesenja, ima netko ideju sto napraviti?