2010-08-24 16 views
17

Birden fazla grup ya da ben jQuery kontrol edebilirsiniz nasılJQuery'de her grupta bir radyo düğmesi olup olmadığını nasıl kontrol edersiniz? Her grupta bir radyo düğmesi işaretli olduğundan

<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" /> 

radyo düğmeleri?

Teşekkür ederiz.

cevap

21

Ben yapardım nasıl. Radyo düğmeleriniz hangi etiketle karıştırılmışsa, hala çalışır. play around with it yapabilirsiniz. Bir form veya div ile

+0

Evet. Ama çözümün işe yaradı. Teşekkürler. – iHello

2

böyle herhangi :checked olanlar, orada eğer her soru (<h1>) ve onun cevapları bakarak .filter() ile .nextUntil() kullanarak döngü görmek için olabilir:

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

Bu, hiçbir radyo ile tüm soruları dönecekti seçilen

if(noAns.length > 0) { 
    alert(noAns.length + " question(s) don't have answers!"); 
} 
: Eğer herhangi cevabı yoksa, örneğin görmek istiyorsa onlar için, şunun .length kontrol edebilir

You can give it a try here.


Ayrıca cevapsız edildi soruları vurgulayarak örneğin, bu biraz uzatabilirsiniz:

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

ve you can give it a try here bunu sonraki yuvarlak temizlemek için $("h1").css({ color: "" }) kullanın.

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

Eğer kardeş veya üst etiketler güvenmek gerekmez Bu şekilde: Burada

1

Wrap her radyo grupları: jQuery Sonra

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

:

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

Ben tarafından cevap upvoted "GG". Ancak, HTML’yi değiştirmeniz gerekmez. tarafından seçmeniz yeter

[ad] (benzersiz olmalıdır): aslında radyo düğmeleri diğer etiketler birbirine karışıyordu

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