1
$(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 个复选框是一个奖励!

4

4 回答 4

1

您正在将收音机与复选框混合在一起。您还将 DOM 就绪事件包装在 DOM 就绪事件中。干得好:

$(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(); 
});

演示:http: //jsfiddle.net/qUtQb/

于 2013-03-13T05:24:46.980 回答
0

您可以使用属性选择器按名称定位它们,它不是非常有效,但它会工作并且可能工作得很好。只需将所有$('input:checkbox')s 更改为:

$('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')
于 2013-03-13T05:16:35.290 回答
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它们是 radio not checkbox

所以试试

$('input:radio').attr('checked', false)
$('input:radio').click(function(){
    if($(this).is(':checked')){
        $('input:radio').not(this).attr('checked', false);        
    }
});
于 2013-03-13T05:19:22.830 回答
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();
});

演示:小提琴

于 2013-03-13T05:31:38.970 回答