Подтвердить что ты не робот

Как проверить, включен ли переключатель в каждой группе в jQuery?

Несколько групп или радиокнопки

<h1>Question 1</h1>
<input type="radio" name="radio1" value="false" />
<input type="radio" name="radio1" value="true" /> 

<h1>Question 2</h1>
<input type="radio" name="radio2" value="false" />
<input type="radio" name="radio2" value="true" />

Как я могу проверить в jQuery, что переключатель в каждой группе отмечен?

Спасибо.

4b9b3361

Ответ 1

Вот как я это сделаю:

var all_answered = true;
$("input:radio").each(function(){
  var name = $(this).attr("name");
  if($("input:radio[name="+name+"]:checked").length == 0)
  {
    all_answered = false;
  }
});
alert(all_answered);

Таким образом, вам не нужно полагаться на родственные или родственные теги. Если ваши переключатели смешиваются с любым тегом, он все равно будет работать. Вы можете поиграть с ним.

Ответ 2

Вы можете просмотреть каждый вопрос (<h1>) и просмотреть его с помощью .nextUntil() с .filter(), чтобы увидеть, есть ли :checked, например:

var noAns = $("h1").filter(function() {
              return $(this).nextUntil("h1").filter(":checked").length == 0;
            });

Это вернет все вопросы без радио, выбранных для них, вы можете проверить .length, если хотите посмотреть если у кого нет ответов, например:

if(noAns.length > 0) { 
  alert(noAns.length + " question(s) don't have answers!"); 
}

Вы можете попробовать здесь.


Вы также можете расширить это, например, выделив те вопросы, которые были пропущены:

if(noAns.css({ color: "red" }).length > 0) { 

и используйте $("h1").css({ color: "" }), чтобы очистить его в следующем раунде, вы можете попробовать здесь.

Ответ 3

Оберните каждую группу радиостанций с помощью form или div:

<div id="question1">
    <h1>Question 1</h1>
    <input type="radio" name="radio1" value="false" />
    <input type="radio" name="radio1" value="true" />
</div>

<div id="question2">
    <h1>Question 2</h1>
    <input type="radio" name="radio2" value="false" />
    <input type="radio" name="radio2" value="true" />
</div>

Затем в jQuery:

if ($('#question1 input[type=radio]:checked')[0] != undefined && $('#question2 input[type=radio]:checked')[0] != undefined) {
    ...
}

Ответ 4

Я поддержал ответ "GG". Однако вам не нужно менять HTML.

Просто выберите [name] (который должен быть уникальным):

if ($("input[name='radio1']:checked")[0] != undefined && 
    $("input[name='radio2']:checked")[0] != undefined) {
  ...
}