2

我有一个非常简单的问题——我在想——但我自己无法解决。

我有两个复选框:一个值为 Yes,另一个值为 No。

我需要某种脚本来帮助我在选中另一个时取消选中另一个。所以如果我选中复选框没有。1 - 复选框编号。2 自动取消选中 - 反之亦然。必须始终选中其中一个复选框 - 并且只有一个 -。不 - 在这种情况下我不能使用单选按钮。

如果可以在 jQuery 中完成,那就太好了 - 但任何帮助都可以:)

提前致谢

罗伯特

4

5 回答 5

3

我能想到的最简单的方法是使用以下方法:

$('input:checkbox').change(
    function(){
        var group = this.name;
        $(this).siblings('input:checkbox[name="'+ group + '"][checked]').removeProp('checked');
    });

JS 小提琴演示

但是有一些警告,上面的用途removeProp()仅限于 jQuery 1.6(大概及更高版本)。在 1.6 之前,应该可以removeAttr('checked')替代。

但是,请重新考虑使用<input type="radio" />元素,这正是它们旨在处理和使用的内容。


编辑了罗伯特的以下评论(在下面的评论中):

我按计划完成了这项工作,但是……在我的表格中,我有另一组复选框,尽管它们的名称完全不同,但它们也受到了限制。但我需要用户能够选择多个这些复选框。似乎该脚本会影响所有复选框组。我实际上认为通过输入 name="'+ group +'" 可以将功能限制为那些名称以“group”开头的复选框。但情况似乎并非如此。

分配change事件处理程序的选择器$('input:checkbox')选择/应用于页面上的所有复选框。

要将其仅应用于特定组中的那些复选框,您可以使用:

$('input:checkbox[name="checkboxGroupName"]').change(
    function(){
        $(this).siblings().removeProp('checked');
    });

参考:

于 2011-06-20T21:59:03.153 回答
2
$("#checkbox1").bind('click', function(){ $("#checkbox2").removeAttr('checked'); });
$("#checkbox2").bind('click', function(){ $("#checkbox1").removeAttr('checked'); });
于 2011-06-20T21:49:36.690 回答
1
    $('#checkbox_1').change(function() {

        if ($(this).is(':checked')) {
            $('#checkbox_2').prop('checked', false);
        }
        else {
            $('#checkbox_1').prop('checked', false);
            $('#checkbox_2').prop('checked', true);
        }
    });

    $('#checkbox_2').change(function() {

        if ($(this).is(':checked')) {
            $('#checkbox_1').prop('checked', false);
        }
        else {
            $('#checkbox_2').prop('checked', false);
            $('#checkbox_1').prop('checked', true);
        }
    });

编辑:现在应该可以工作了:-)

于 2011-06-20T21:48:49.737 回答
0
function ChkBoxClicked() {
    $("#chkBoxList_0").bind('click', function () { $("#chkBoxList_1").removeAttr('checked'); });
    $("#chkBoxList_1").bind('click', function () { $("#chkBoxList_0").removeAttr('checked'); }); 

    if (($('#chkBoxList_0').is(':checked')) || ($('#chkBoxList_1').is(':checked'))) {
        if ($('#chkBoxList_0').is(':checked')) { alert('chkBoxList_0'); return false; }
        if ($('#chkBoxList_1').is(':checked')) { alert('chkBoxList_1'); return false; }
    } else {
        alert('non of the chkBoxList'); return false;
    }
}

我就是这样做的

于 2012-08-14T09:30:03.850 回答
0
$( document ).ready(function() {
    $( ".checkbox1" ).click(function(event) {
    $(this).parents('tr').children('td').children('.todos').prop('checked', false); 
    });
    $( ".checkbox2" ).click(function(event) {
        $(this).parents('tr').children('td').children('.checkbox1').prop('checked', false); 
    });

这基本上表明,当复选框 1 被选中并且用户尝试选中复选框 2 时,复选框 1 将被取消选中。

于 2015-08-03T20:54:15.507 回答