2013-12-16 81 views
0

如何验证多个单选按钮。所有这些单选按钮动态生成。如何验证多个单选按钮

<input type="radio" name="answer_option1" value="1" id="ans_options1" /> 
<input type="radio" name="answer_option1" value="2" id="ans_options2" /> 
<input type="radio" name="answer_option1" value="3" id="ans_options3" /> 
<input type="radio" name="answer_option1" value="4" id="ans_options4" /> 

<input type="radio" name="answer_option2" value="5" id="ans_options5" /> 
<input type="radio" name="answer_option2" value="6" id="ans_options6" /> 
<input type="radio" name="answer_option2" value="7" id="ans_options7" /> 
<input type="radio" name="answer_option2" value="8" id="ans_options8" /> 

<input type="radio" name="answer_option3" value="9" id="ans_options9" /> 
<input type="radio" name="answer_option3" value="10" id="ans_options10" /> 
<input type="radio" name="answer_option3" value="11" id="ans_options11" /> 
<input type="radio" name="answer_option3" value="12" id="ans_options12" /> 

<input type="radio" name="answer_option4" value="13" id="ans_options13" /> 
<input type="radio" name="answer_option4" value="14" id="ans_options14" /> 
<input type="radio" name="answer_option4" value="15" id="ans_options15" /> 
<input type="radio" name="answer_option4" value="16" id="ans_options16" /> 
+0

意味着什么? – Kiyarash

+0

是@Kiyarash .. – Nitin

回答

9

试试这个http://jsfiddle.net/aamir/r9qR2/

由于每个组都有不同的名称属性,所以你必须为每个组单选按钮做验证。

if($('input[name="answer_option1"]:checked').length === 0) { 
    alert('Please select one option'); 
} 

如果您有无限个组数。试试这个http://jsfiddle.net/aamir/r9qR2/2/

//Make groups 
    var names = [] 
    $('input:radio').each(function() { 
     var rname = $(this).attr('name'); 
     if ($.inArray(rname, names) == -1) names.push(rname); 
    }); 

    //do validation for each group 
    $.each(names, function (i, name) { 
     if ($('input[name="' + name + '"]:checked').length == 0) { 
      console.log('Please check ' + name); 
     } 
    }); 

如果你想显示所有组只有1个错误。试试这个http://jsfiddle.net/aamir/r9qR2/4/

+0

有超过50组。 – Nitin

+0

hummm让我试试别的东西:P –

+0

现在它将验证所有的团体没有mater多少 –

0

尝试这种新的拨弄你想如果选择了单选按钮,检查http://jsfiddle.net/Hgpa9/3/

$(document).on("click","#validate", function() { 
var names = []; 

    $('input[type="radio"]').each(function() { 
     // Creates an array with the names of all the different checkbox group. 
     names[$(this).attr('name')] = true; 
    }); 

    // Goes through all the names and make sure there's at least one checked. 
    for (name in names) { 
     var radio_buttons = $("input[name='" + name + "']"); 
     if (radio_buttons.filter(':checked').length == 0) { 
      alert('none checked in ' + name); 
     } 
     else { 
      // If you need to use the result you can do so without 
      // another (costly) jQuery selector call: 
      var val = radio_buttons.val(); 
     } 
    } 
}); 
+0

你从第一组中选择1个单选按钮。您不会选择其他组中的任何内容,并且此代码无效。 –

+0

尝试这个新的小提琴。 http://jsfiddle.net/Hgpa9/3/我已经更新了多个组的代码。 –

+0

谢谢@米兰布。它的工作:) – Nitin

0
var names = [] 
$('input[name^="answer_option"]').each(function() { 
    var rname = $(this).attr('name'); 
    if ($.inArray(rname, names) == -1) names.push(rname); 
}); 

$.each(names, function (i, name) { 
    if ($('input[name="' + name + '"]:checked').length == 0) { 
     console.log('Please check ' + name); 
    } 
}); 
+0

CSS3不支持IE8 – Balachandran