检查是否使用jquery选择动态加载的无线电组

时间:2013-11-28 13:35:34

标签: jquery

我有一组单选按钮,如下所示。

<input type="radio" name="multi[1]" value="value-1">
<input type="radio" name="multi[1]" value="value-2">

<input type="radio" name="multi[2]" value="value-3">
<input type="radio" name="multi[2]" value="value-4">

<input type="radio" name="multi[3]" value="value-5">
<input type="radio" name="multi[3]" value="value-6">
<input type="radio" name="multi[3]" value="value-7">

<input type="radio" name="multi[n]" value="value-n">
<input type="radio" name="multi[n]" value="value-n">
<input type="radio" name="multi[n]" value="value-n">

如果动态加载这些组,那么我们如何检查每个组中的选项是否被选中?

更新:

num_group = 2;
for(i = 1; i <= num_group; i++){
   if(!$('input[name="multi['+i+']"]').is(':checked')){
         alert('Please select elective subjects '+i+'!');
         return false;
   }
}

如何动态计算num_group?这里

2 个答案:

答案 0 :(得分:1)

您必须检查document是否为ready,然后将change事件绑定到文档。

这会考虑任何动态加载的元素(change函数对这些元素仍有火焰。)

$(document).ready(function(){
    $(document).on('change', 'input[type=radio]', function(){
        console.log($(this).val())
    });
});

答案 1 :(得分:1)

这实际上取决于您希望拥有的验证类型。

如果您尝试在某个特定时间验证单选按钮,例如,当用户按下提交按钮时,您可以非常简单地浏览所有无线电,例如:

var max_radios = 1; // keep this updated as radio buttons are added
$('#validate').click(function() {
    for (i = 1; i <= max_radios; i++) {
        console.log('Radio ' + i + ' is ' + 
                    ($('[name="multi[' + i + ']"]:checked').val() == undefined ? 'unchecked' : 'checked') + '<br />');
    }
})

Link to jsFiddle

如果您希望在用户添加/单击单选按钮时进行验证,则会有点麻烦。在这种情况下,只要添加了一个新的单选按钮,就需要发出一条验证消息,指示用户应该进行选择,并且一旦选择了值,验证消息就会消失。如果这就是你想要的,请告诉我。