Как проверить если переключатель в каждой группе отмечен в 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, что переключатели в каждой группе проверен?

Спасибо.

19
задан iHello 24 August 2010 в 02:36
поделиться

2 ответа

Я бы сделал это следующим образом:

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);

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

24
ответ дан 30 November 2019 в 04:20
поделиться

Вы можете просмотреть каждый вопрос (

) и ответы на него, используя .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: "" }), чтобы очистить его в следующем раунде, вы можете попробовать это здесь.

2
ответ дан 30 November 2019 в 04:20
поделиться
Другие вопросы по тегам:

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