eLearning
@eLearning
instructional designer

Как сделать, чтобы оставался только один активный чекбокс?

Есть страница, которая содержит кучу спойлеров. Спойлеры сделаны из чекбоксов.

Нужно, чтобы оставался только один выбранный чекбокс (открытый спойлер): пользователь отмечает следующий чекбокс, а предыдущий закрывается. Радиокнопка не подходит, так как мне нужно, чтобы по щелчку на открытый спойлер он мог "схлопываться".

Есть такой код, который работает в песочнице, но почему-то не работает на странице:

(function (){
      var checkHide = document.getElementsByClassName('del');

      for (var i=0; i<checkHide.length; ++i){
        checkHide[i].addEventListener('click', function(){
          if (this.checked){
            for (var j=0; j<checkHide.length; ++j){
              checkHide[j].checked = false;
            }
            this.checked = true;
          }
        }, false); 
      }
    })();


Может, есть какие-нибудь другие способы решить задачу?
  • Вопрос задан
  • 911 просмотров
Пригласить эксперта
Ответы на вопрос 3
Следовательно не работает по сторонним причинам: либо ошибка в коде до этого отрезка, либо он подключён до появления самих чекбоксов на странице, либо ещё что. Другой способ решения - не использовать чекбоксы не по назначению.
Ответ написан
Комментировать
gluck59
@gluck59
Виртуальный глюк
На кой хрен там чекбоксы? :)
Используйте onclick на заголовке спойлера и toggle на самом спойлере. Всего одна строка вместо этой каши.
Ответ написан
Комментировать
mrTyler
@mrTyler
Frontend Developer
$('input[type="checkbox"]').on('change', function() {
   $('input[type="checkbox"]').not(this).prop('checked', false);
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы