@danilr

Как выбирать стрелками клавиш между блоками?

Есть вот такой интерфейс, вводишь в input и при совпадении поиска - выдаются варианты. Подскажите как сделать так, чтобы по ним можно было переключаться с помощью стрелочек вверх и вниз? (это просто блоки div)
5cb850d02155f777323175.png
Шаблон этого интерфейса:
<template>
	<div class="search-btn-wrapper" :class="{'search-open': isOpenSearch}">
		<div class="input-search-box">
			<input
				id="inpit-search"
				placeholder="Поиск ЖК/застройщика"
				v-model="inputText"
				@input="inputHandler"
			>
			<div v-if="!isOpenSearch" @click="searchOpen" class="img-open-wrapper">
				<img class="img-loop" src="/images/map-search/search-black.svg">
			</div>
			<img v-else @click="searchClose" class="img-drop" src="/images/map-search/close-black.svg">
		</div>
		<div v-if="isOpenSearch && nameSearch.length && !choosenName" class="search-result-wrapper">
      <div :key="index" v-for="(residential, index) in getFilterRc.slice(0,4)" 
          class="result-point" 
          @click="handlerDevOrRc(residential.id)"
      >
				<div class="result-img-wrapper">
          <img class="img-result" src="/images/map-search/developer-search.svg">
				</div>
				<div class="result-title">{{residential.title}}</div>
			</div>
		</div>
	</div>
</template>
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
https://ru.vuejs.org/v2/examples/select2.html

Ну или написать самому: слушать keydown, давать выбранному элементу какой-то класс.
Ответ написан
hzzzzl
@hzzzzl
я бы делал как-то так, смотря как этот список реализован и как он работает

let currentlySelected = 0  // по умолчанию подсвечен первый

window.addEventListener('keydown', e => {
//  e.keyCode = 38 вверх 40 вниз
  if (inputSelectOpened && (e.keyCode === 38 || e.keyCode ===40)) {
    // список развернут и вверх/вниз
    //  тут у всех элементов списка убрать выделение
    // currentlySelected ++ или -- в зависимости от keyCode
    inputSelectElements[currentlySelected].classList.add('selected')
  }
})


UPD
не заметил в тэгах что это про Vue, тогда не знаю
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект