$(document).ready(function (){
$(function(){
$('input:checkbox').prop('checked', false)
$('input:checkbox').click(function(){
if($(this).is(':checked')){
$('input:checkbox').not(this).prop('checked', false);
}
});
})
showdiv();
});
以上代码真棒!!首先它使所有复选框“未选中”然后它使它只能一次检查“一个”复选框!
但是......我需要它只影响下面的三个复选框!不是页面上的所有复选框!猜猜我不知道怎么让它只针对id的co33,co34,co35 ..
<input name="option[13]" id="co33" value="33" checked="checked" onclick="showdiv()" type="radio">
<input name="option[14]" id="co34" value="34" checked="checked" onclick="showdiv()" type="radio">
<input name="option[15]" id="co35" value="35" checked="checked" onclick="showdiv()" type="radio">
然后!!! ...如果其中一个被选中,那么第四个复选框也会被检查!!如果检查了上述三个中的任何一个,那么也不检查这个!
<input id="a1" type="checkbox" onclick="showdiv()" name="add[1]">
男人我希望它出来正确.. html是自动创建的,所以我不能让他们都有相同的ID或添加一个类,所以我想看看我是否可以通过id名称来定位他们。坦率地说即使只是能够使最初发布的代码只影响3个复选框会很棒..如果选中其中一个,则检查第4个复选框是奖励!
答案 0 :(得分:1)
您将无线电与复选框混合在一起。您还在DOM ready事件中包装DOM ready事件。你走了:
$(function(){
$('input:checkbox').prop('checked', false);
$('input:radio').prop('checked', false).filter(function(e){
return (this.id == 'co33' ||
this.id == 'co34' ||
this.id == 'co35');
}).on('click', function(){
if($(this).is(':checked')){
$('input:radio').not(this).prop('checked', false);
$('#a1').prop('checked', true);
}
});
showdiv();
});
答案 1 :(得分:0)
您可以使用属性选择器按名称定位它们,它不是非常有效但它可以工作并且可能运行得很好。只需将所有$('input:checkbox')
更改为:
$('input[name="option[13]"], input[name="option[14]"], input[name="option[15]"]')
在点击处理程序的末尾(在if之外),执行:
$('#a1').prop(
"checked",
$('input[name="option[13]"], input[name="option[14]"], input[name="option[15]"]')
.is(':checked')
);
编辑:实际上,我刚刚注意到感兴趣的组上的ID,它会更快(更少打字)来打击它们。使用选择器:
$('#co33, #co34, #co35')
答案 2 :(得分:0)
你的问题就像是
“但是......我需要它只影响下面的三个复选框!不是页面上的所有复选框!!!猜猜我不知道怎么让它只针对id的co33,co34,co35 ..”
<input name="option[13]" id="co33" value="33" checked="checked" onclick="showdiv()" type="radio">
<input name="option[14]" id="co34" value="34" checked="checked" onclick="showdiv()" type="radio">
<input name="option[15]" id="co35" value="35" checked="checked" onclick="showdiv()" type="radio">
并且您现在已经按照HTML
中的定义获得了上面的HTML标记,它们是无线电而非checkbox
。
所以试试
$('input:radio').attr('checked', false)
$('input:radio').click(function(){
if($(this).is(':checked')){
$('input:radio').not(this).attr('checked', false);
}
});
答案 3 :(得分:0)
尝试类似
的内容$(function(){
var radios = $('input:radio[name^=option]').prop('checked', false)
radios.click(function(){
if($(this).is(':checked')){
$('input:radio[name^=option]').not(this).prop('checked', false);
}
$('#a1').prop('checked', radios.is(':checked'))
});
showdiv();
});
演示:Fiddle