Задать вопрос
@TipTop89

Как при открытии одного select закрыть другой?

Как при открытии одного select закрыть другой select? Спасибо за помощь
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Stepik
    JavaScript с нуля - основы языка и практика для начинающих
    2 недели
    Далее
  • Merion Academy
    Фронтенд-разработчик с нуля
    4 месяца
    Далее
  • Skypro
    JavaScript-разработчик с нуля
    9 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Решения вопроса 1
@MrColdCoffee
web
Вы убираете/добавляете класс только у элемента, на который был совершён клик, а надо сначала убрать класс у всех элементов, а затем изменить у кликнутого:
selectBtn.addEventListener("click", function (e) {				
        let elem_active = optionMenu.classList.contains("_active")
        optionMenus.forEach(opt => {
          opt.classList.remove('_active');
        })
        optionMenu.classList.toggle("_active",!elem_active)
			});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Возможно будет правильнее не "закрыть другие селекты", а "закрывать селект при клике вне его выпадающего списка".

Таким образом вы решите не только проблему нескольких открытых селектов, но и "открыли селект, потом кликаем где-то по другим полям, но селект не закрылся и мешает".

Также можно прикрутить закрытие по esc.
Ответ написан
Комментировать
@Froggyweb
Использовать нативный тег select, а для стилизации использовать js оттестированный например select2.
иначе будет слишком много косяков юзабильности. Это и переход по таб и раскрытие стрелкой и выбор через энтер....
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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