javascript - 如果选中一个复选框,如何取消选中另一个复选框?

标签 javascript jquery

我的计算器有一些问题,我有五个复选框(costOne、costTwo、costThree、costFour、costFive)

当我检查costOne时,costTwo应该关闭,但是如果我点击这个costTwo(然后它被关闭),那么costOne 应关闭。

我的代码仅部分有效:当我单击costOne时,您将无法再单击costTwo(因为它被禁用),但是当我单击costOne 它关闭,同时 costTwo 打开 - 这正是我想要的。

但我无法点击costTwo

我需要第一个和第三个输入具有此链接的行为。

相关代码如下:

//calculator
var init = $('.switch input').on('click', function() {
    var value1 = 0;
    var value2 = 0;

    var costOne = $("#cost-one"),
        costTwo = $("#cost-three");


    if (costOne.is(':checked')) { 
        costOne.prop("checked", true);
        costTwo.prop("checked", false);
    } else { 
        costOne.prop("checked", false);
        costTwo.prop("checked", true);
    }

    init.filter(':checked').closest('tr').each(function() {
        value1 += (+$(this).find('span.cost-one').text());
        value2 += (+$(this).find('span.cost-two').text());
    });

    $('.counter-one span').eq(0).html(value1 + ' ');
    $('.counter-two span').eq(0).html(value2 + ' ');
});

最佳答案

您可以使用此代码(简化以关注问题):

$('input').on('change', function(){
    var id = $(this).prop('id');
    if (id == 'cost-one' || id == 'cost-three') {
        // Make sure the two have opposite values:
        var other = id == 'cost-one' ? 'cost-three' : 'cost-one';
        $('#'+other).prop("checked", !$(this).prop("checked"));
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
One: <input type="checkbox" id="cost-one"><br>
Two: <input type="checkbox" id="cost-two"><br>
Three: <input type="checkbox" id="cost-three" checked><br>

other 变量将标识另一个复选框的 id:如果您点击 cost-one,它将引用 >成本三,反之亦然。

然后其他复选框将获得相反的选中状态。

为了保持一致,您还应该在页面加载时检查两者之一,因此我为第三个复选框添加了 checked 属性。

正如评论中所表达的,这种行为是单选按钮的标准行为。因此,除非您的库不支持相同的小部件查找,否则您可能更好地使用它们(对于那些链接的项目)。

关于javascript - 如果选中一个复选框,如何取消选中另一个复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39016642/

相关文章:

javascript - 事件发生后阻止特定功能

javascript - 如何在onclick函数中获取Var?

jquery - Highchart donut 派 - 是否有最大切片数

javascript - jQuery 实时搜索 - 也删除表头

javascript - for-in-Loop 之后执行代码的问题

javascript - JSON 无效 token

Zabuto 日历中的 Javascript onclick 事件

javascript - 在 JavaScript 中合并两个数组的值

javascript - 将虚拟事件添加到完整日历以创建插槽

jquery - ASP.net WebMethod 返回完整的页面内容而不是 JSON 数据