-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathautoComplete.js
44 lines (37 loc) · 1.31 KB
/
autoComplete.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const inputCidade = document.querySelector('.procurar input');
const listaCidades = document.querySelector('.procurar ul');
function autocompletarCidades(dados) {
// Criar uma lista de todas as cidades
let todasCidades = [];
dados.estados.forEach(estado => {
todasCidades = todasCidades.concat(estado.cidades.map(cidade => ({
nome: cidade,
estado: estado.sigla
})));
});
inputCidade.addEventListener('input', function() {
const textoInput = this.value.toLowerCase();
const sugestoes = todasCidades.filter(cidade =>
cidade.nome.toLowerCase().startsWith(textoInput) ||
cidade.estado.toLowerCase().startsWith(textoInput)
);
mostrarSugestoes(sugestoes);
});
function mostrarSugestoes(sugestoes) {
limparSugestoes();
sugestoes.forEach(sugestao => {
const li = document.createElement('li');
li.textContent = sugestao.nome + ' - ' + sugestao.estado;
li.addEventListener('click', function() {
inputCidade.value = sugestao.nome + ', ' + sugestao.estado;
limparSugestoes();
});
listaCidades.appendChild(li);
});
}
function limparSugestoes() {
while (listaCidades.firstChild) {
listaCidades.removeChild(listaCidades.firstChild);
}
}
}