Установите хотя бы одно радио / флажок на активной вкладке

Я использую вкладку Bootstrap для отображения вопросов и ответов опроса (либо список флажков, либо список переключателей). Мне нужно проверить, что на каждой вкладке (если она активна в данный момент) должен быть выбран хотя бы один Radio / Checkbox. Как я могу этого добиться?

Моя DOM выглядит так

<div class = "tab-content">
    <div role = "tab" class = "tab-pane active" id = "1">
        <div class = "considerable">
           ... Radio button list goes here 
        </div>
    </div>
    <div role = "tab" class = "tab-pane" id = "2">
        <div class = "considerable">
           ... Checkbox list goes here 
        </div>
    </div>
</div>
<div id = "divCalculatorControl">
    <a href = "#" id = "aSwitchToBack" style = "">Back</a>
    <a href = "#" id = "aSwitchToNext">Next</a>
</div>

При щелчке якоря с идентификатором «aSwitchToNext» мне нужно подтвердить выбор ввода.

Я пробовал, как показано ниже, но он работает и для неактивных вкладок.

if ($('div.active > .considerable > input:checked').length) {
   // Continue
}
else{
   alert("Please select an answer");
}

попробуйте, если hasClass ("активный")

clearshot66 07.05.2018 19:02

@ clearshot66 сначала мне нужно узнать, активна ли вкладка или нет (bootstrap), а затем мне нужно проверить, выбрано ли что-нибудь или нет.

Shreekumar S 07.05.2018 19:09

Пожалуйста, предоставьте свой полный HTML

clearshot66 07.05.2018 19:20
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
3
168
2

Ответы 2

Используйте has class при щелчке назад или далее, затем проверьте количество переключателей и флажков под этим div, которые отмечены или нет

$(document).ready(function(){
        $("#aSwitchToBack").click(function(){
         if ($(".tab-pane").hasClass("active")){
                var err = 0;
            if ($(this).find("input:radio:checked").length < 1){
                err++;
            }
            if ($(this).find("input:checkbox:checked").length < 1){
                err++;
            }
            if (err > 1){
                 // stop here
            }
         }
      });

    });

Попробуй это

Проверить демо здесь

JS:

$(function() {
  $('a[data-toggle = "tab"]').on("show.bs.tab", function(e) {
    let getCurrenActiveTabContent = $(e.relatedTarget).attr("href");
    let activePanel = getCurrenActiveTabContent + " input";
    if (!$(activePanel).is(":checked")) {
      return false;
    }    
  });
});

Другие вопросы по теме