Как бы выглядело такое автозаполнение инпута на чистом JS?
Можно вообще без js<input list="aaaa">
<datalist id="aaaa">
  <option value="Текст1"></option>
  <option value="Текст2"></option>
</datalist>
Добавляем addeventlistener к инпуту при вводе символа, callback функция делает следующее:
1) Сверяет текущее значение с массивом autocomplete
2) Если найдены совпадения - создаёт в dom-дереве список ul с необходимой вёрсткой через document.createElement
3) Для каждого элемента списка добавляем addeventlistener: при клике на элемент значение из элемента копируется в инпут, список ul уничтожается
4) Делаем appendChild списка ul после инпута (или внутрь или перед и т.п., как удобнее для сделанной вёрстки)