Здравствуйте, пилю свой форум, на странице создания новых сообщений есть инпут, куда человек вводит теги. Задача сделать внизу автодополнение в зависимости от того что человек ввел, как тут, на habr qna. Я реализовал так:
//tag - инпут, куда человек вводит теги. result - div, куда выводятся варианты тегов, на странице находится под инпутом
//result-elem - предлагаемый тег внутри result
tag.addEventListener('input', ()=>{ //при любом изменении инпута тегов благодаря этому событию происходит триггер
if(tag.value.length > 2) { //при вводе больше 2 букв начинается подбор
result.style.opacity = '1'; //показываем div результатов
while (result.firstChild) { //очищаем из него предыдущие значения
result.removeChild(result.firstChild);
}
tags.forEach((elem)=>{ //tags - массив тегов вида ['apple','orange','pear'], перебираем методом forEach
let string = elem; //string принимает значения тега
let flag = string.includes(tag.value); //если строка string содержит содержимое инпута, то во flag кладется true
if (flag) {
insertElem(elem); //функция, ничего особенного, создает и вставляет элемент p в result с содержимым elem
}
});
} else {
result.style.opacity = '0'; // если введено меньше 2 символов, убираем result
}
});
Проверил, все работает. Вопрос в следующем - можно ли в этот алгоритм встроить допускание человеком ошибок? Если введено например "рыьалка", как научить систему понимать, что это тег "рыбалка"?
Upd: На ум сразу же приходит что то вроде подсчета процента совпадений и чего-то такого. Я правильно копаю?