2011-06-22 34 views
2

我正在开发项目,其中我有fieldset #a像这样。将一组复选框的状态复制到另一个字段集

<fieldset id="a"> 
     <input type="checkbox" name="c1" value="v1" checked="checked" /> 
     <input type="checkbox" name="c2" value="v2"/> 
     <input type="checkbox" name="c3" value="v3"/> 
</fieldset> 

字段集#A复选框:被选中值是动态的。

我在另一个字段集#b在同一页上。

我想是分配/复制复选框:被选中从字段集#A值字段集#B串行在页面加载。 [这两个字段都有相同数量的复选框。 ]

<fieldset id="b"> 
     <input type="checkbox" name="cc1" value="vv1"/> 
     <input type="checkbox" name="cc2" value="vv2"/> 
     <input type="checkbox" name="cc3" value="vv3"/> 
</fieldset> 

我该如何做到这一点?谢谢。

回答

3

你可以使用你提到的选择器,然后循环每个值,获取它们的索引,并根据这些指示更新下一个字段集复选框。

像这样:

$('fieldset#a input[type="checkbox"]:checked').each(function(){ 
    $('fieldset#b input[type="checkbox"]').eq($(this).index()).prop('checked',true); 
}); 

例如:http://jsfiddle.net/niklasvh/hHnLu/

+0

谢谢Niklas!它的作品完美:) – MANnDAaR

+0

@MANnDAaR我刚刚做了一个小编辑,使用它。 – Niklas

+0

如果在字段集#b中选中了某些复选框,则代码将失败。让我们检查我的:http://jsfiddle.net/nPnMa/和你的:http://jsfiddle.net/NVPN6/ – CoolEsh

0

您可以使用这样的事情:

$('#b').children('input:checkbox').each(function(i) { 
    var aChecked = $('#a').children('input:checkbox').eq(i).prop('checked'); 
    if (aChecked) 
    { 
     $(this).prop('checked', true); 
    } 
    else 
    { 
     $(this).removeProp('checked'); 
    } 
}); 
+0

嗨CoolEsh!感谢您的回答。即使这个作品perefect :) – MANnDAaR

+0

我刚才注意到@Niklas代码完美工作,如果你不关心在场集#b中执行脚本之前检查了哪些复选框。 – CoolEsh

0

我是不是能够得到上述东西的工作,因此我尝试下面的方法和有效。

// lets uncheck all the checkboxes in first fieldset                        
$('#b input[type=checkbox]').removeProp('checked');          

    cj('#b [type=checkbox]').each(function() { 
    if (cj(this).prop('checked')) { 
     // here get the index of current element 
     // then modify below code to set prop checked 
     cj('#a [type=checkbox]').prop('checked',true); 
    } 
}); 

希望这有助于!

相关问题