Javascript jQuery逻辑有问题。如果选中了其他复选框,则需要取消选中其中一个复选框,反之亦然

Javascript jQuery逻辑有问题。如果选中了其他复选框,则需要取消选中其中一个复选框,反之亦然,javascript,jquery,Javascript,Jquery,我有下面的代码 如果选中复选框,则应取消选中另一个复选框,然后显示div。如果选中另一个复选框,则应取消选中另一个复选框,然后显示div 它是单向的,但不是双向的。我想不出如何使它同时起作用 $('#ssUseDates, #isSearchByDate').click(function() { if($('#isSearchByDate').attr('checked')) { $('#ssUseDates').removeAttr('checked');

我有下面的代码

如果选中复选框,则应取消选中另一个复选框,然后显示div。如果选中另一个复选框,则应取消选中另一个复选框,然后显示div

它是单向的,但不是双向的。我想不出如何使它同时起作用

    $('#ssUseDates, #isSearchByDate').click(function() {

    if($('#isSearchByDate').attr('checked')) {
        $('#ssUseDates').removeAttr('checked');
        $('#searchDates').show();
    }
    else if($('#ssUseDates').attr('checked')) {
        $('#isSearchByDate').removeAttr('checked');
        $('#searchDates').show();
    }
如果我选中#isSearchByDate框,然后选中#isSearchByDate框,它工作得很好,取消选中#isSearchByDate框,然后显示div。如果我选中#isSearchByDate框,那么#isSearchByDate框,它不工作,不会让框选中,也不会取消选中其他框


感谢您提供的任何建议。

请提供相同的类名,并为要显示的id添加一个引用。请尝试以下操作:

$('.checkClass').change(function() {
    if($(this).is(':checked')) {
        $('.checkClass').not(this).attr('checked', false).change();
        $('#'+$(this).attr('ref')).show();
    }
    else {
        $('#'+$(this).attr('ref')).hide();
    }
});

这里有一把小提琴:

我认为共享的
click()
中的
if…else…
是你的问题。尝试将其拆分:

或者(也不太吸引人),您还可以测试单击元素的id:


您正在使用哪个版本的jQuery?为什么不使用单选按钮?Kei,因为默认情况下,不会选中任何一个,并且用户必须能够取消选中这两个选项。这只是两个可以选择的选项,但可能不是。两者都公开一个日期范围,以使用下拉列表选择日期,但取决于选中的复选框确定数据库返回结果的方式。例如,按条件A搜索或按条件B搜索。您不能同时执行这两项操作,也可能不想执行这两项操作。:)很公平。。那么,这样做如何:3个单选按钮(1个隐藏并在加载时选择,2个用于您的选项)。当页面呈现时,您会看到两个未选中的单选按钮:)@iCONICA——请参阅对我的答案的更新。它又短又甜^嗨,尼尔。谢谢,但它并没有按要求工作。它永远不允许同时选中两个复选框。被选中的一个应取消选中另一个(如果选中)。它们显示的div是同一个div。我得到了:$('.chk').change(function(){if($(this).is(':checked')){$(''searchDates').show();}else{$('searchDates').hide()})@i-CONICA把你正在做的事情弄得一团糟,我们将从那里开始工作。^尼尔:我没有否决你的答案,但这可能是因为你的代码在选中新的复选框时没有取消选中复选框。嗨,mblase75。代码看起来很棒(第一块)。它的工作原理几乎完美,但如果用户打开一个框,它不会隐藏搜索日期(大家好,我自己计算出了这个部分。:D$(function(){$('isSearchByDate')。单击(function(){if($('isSearchByDate')。attr('checked')){$('IsSearchStates')。移除attr('checked');$('searchDates')。显示()}否则{$('searchDates')。隐藏()});$('sUserStates')。单击(function(){if($('searchDates.attr')。)('checked')){$('isSearchByDate')。移除属性('checked');$('searchDates')。显示();}其他{$('searchDates')。隐藏();}});
$(function() {
    $('#isSearchByDate').click(function() {
        if ($('#isSearchByDate').attr('checked')) {
            $('#ssUseDates').removeAttr('checked');
            $('#searchDates').show();
        } 
    });
    $('#ssUseDates').click(function() {
        if ($('#ssUseDates').attr('checked')) {
            $('#isSearchByDate').removeAttr('checked');
            $('#searchDates').show();
        }
    });
});
$(function() {
    $('#ssUseDates, #isSearchByDate').click(function() {
        if ($(this).attr("id") == "isSearchByDate" && $('#isSearchByDate').attr('checked')) {
            $('#ssUseDates').removeAttr('checked');
            $('#searchDates').show();
        } else if ($(this).attr("id") == "ssUseDates" && $('#ssUseDates').attr('checked')) {
            $('#isSearchByDate').removeAttr('checked');
            $('#searchDates').show();
        }
    })
})