Automatické doplňování v JavaScriptu
Nyní implementujeme automatické doplňování. Pod tímto pojmem se rozumí rozbalovací nápověda při zadávání textu do vstupního pole. Podívejme se na příklad. Níže jsem vytvořil vstupní pole, do kterého lze zadat název země. Přitom, pokud zadáte nějaká písmena, pod vstupním polem se objeví seznam zemí, které začínají na zadaný řetězec.
V případě zájmu lze, aby nebylo nutné zadávat celý
název země, kliknout myší na libovolnou zemi
a ta se objeví ve vstupním poli. K tomu, obecně řečeno,
automatické doplňování slouží. V příkladu pro jednoduchost
jsem vytvořil pouze tři země: Belarus, Belgium
a Bulgaria. Zadejte do níže uvedeného vstupního pole
nejprve znak 'B' anglické, a poté
'e' a podívejte se, co se stane:
Diskuse
Pojďme diskutovat o tom, jak úlohu řešit. Je třeba vytvořit pole s názvy zemí. U mě je takové:
let arr = ['Belarus', 'Belgium', 'Bulgaria'];
Při zadávání textu do vstupního pole je třeba při zadání každého
znaku procházet pole se zeměmi a získávat
země, které začínají na zadaný řetězec.
To je vhodné dělat pomocí metod filter
a startsWith.
Pomocí filter lze získat pole
zemí začínajících na zadaný řetězec. Poté
je třeba projít toto pole cyklem a naplnit
seznam ul položkami se zeměmi. A tak
je třeba dělat při každém zadání znaku, předtím
odstranit z ul dříve vytvořené položky.
Pro vaše pohodlí uvádím hotové rozvržení:
<div id="parent">
<input id="elem">
<ul id="list"></ul>
</div>
text text text text text
#parent {
position: relative;
}
#elem {
padding: 5px;
font-size: 18px;
}
#parent ul {
position: absolute;
margin: 0;
padding: 0;
list-style-type: none;
background-color: white;
}
#parent li {
border: 1px solid gray;
font-size: 18px;
padding: 5px;
}
#parent li:hover {
border: 1px solid black;
cursor: pointer;
}
Zkopírujte si uvedené HTML a CSS kódy. Implementujte automatické doplňování podle popsaného algoritmu.