Задать вопрос
EugenioPavlov
@EugenioPavlov
Начинающий программист

Живой поиск в двух окнах. Как правильно сформировать код?

Добрый день! Подскажите пожалуйста, что указать в id и класс во втором теге input для поиска сразу в двух окнах?
<form><br><br>
      		<div class="s-box">
      			<input type="text" id="input" autocomplete="off" class="s-input">
                <input type="text" id="????" autocomplete="off" class="????">
      			<input type="submit" class="s-btn" value="Найти">
                <ul class="dropdown" id="dropdown"></ul>
      		</div>
</form>


function box_listener(box){
  const input = box.querySelector('input');
  const dropdown = box.querySelector('#dropdown');

  if (input.value === '') dropdown.style.display = 'none';
  
  const fetch_data = _ => {
  	$.post("files/auto_complet.php", { s: input.value }, (data, status) => {
      if (data != "not found") {
        dropdown.style.display = 'block';
        dropdown.innerHTML = data;
        box.querySelectorAll('.dropdown li').forEach(item => {
          item.onclick = () => e.target.value = item.innerText;
        });
      }
  	});
  }
  
  input.oninput = fetch_data;
  input.onclick = fetch_data;
  
}

document.querySelectorAll('.s-box').forEach(box => {
  box_listener(box);
});

document.body.onclick = e => {
  document.querySelectorAll('.dropdown').forEach(el => el.style.display = 'none');
}
  • Вопрос задан
  • 132 просмотра
Подписаться 1 Средний 5 комментариев
Решения вопроса 1
@historydev Куратор тега JavaScript
Редактирую файлы с непонятными расширениями
Блоки:
input - класс s-input . dropdown - класс dropdown. box - класс s-box

Достаточно назначить классы и вызвать функцию:
<div class="s-box">
      			<input type="text" id="input" autocomplete="off" class="s-input">
                <input type="text" id="????" autocomplete="off" class="????">
      			<input type="submit" class="s-btn" value="Найти">
                <ul class="dropdown" id="dropdown"></ul>
      		</div>

function box_listener(box){
  const input = box.querySelector('.s-input');
  const dropdown = box.querySelector('.dropdown');

  if (input.value === '') dropdown.style.display = 'none';
  
  const fetch_data = _ => {
  	$.post("files/auto_complet.php", { s: input.value }, (data, status) => {
      if (data != "not found") {
        dropdown.style.display = 'block';
        dropdown.innerHTML = data;
        box.querySelectorAll('.dropdown li').forEach(item => {
          item.onclick = () => e.target.value = item.innerText;
        });
      }
  	});
  }
  
  input.oninput = fetch_data;
  input.onclick = fetch_data;
  
}

document.querySelectorAll('.s-box').forEach(box => {
  box_listener(box);
});

document.body.onclick = e => {
  document.querySelectorAll('.dropdown').forEach(el => el.style.display = 'none');
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
EugenioPavlov
@EugenioPavlov Автор вопроса
Начинающий программист
Владимир, я правильно ввел?
<form>
      		<div class="s-box">
      		<input type="text" id="input" autocomplete="off" class="s-input">
                <input type="text" id="s-input.dropdown" autocomplete="off" class="dropdown.box">
                <ul class="dropdown" id="dropdown"></ul>
      		</div>
</form>

А то ничего не получается снова.

636d37d484f42663333107.png
636d38171c646195070490.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы