Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery在选中另一个复选框时禁用一个复选框_Jquery_Checkbox_Onchange - Fatal编程技术网

jQuery在选中另一个复选框时禁用一个复选框

jQuery在选中另一个复选框时禁用一个复选框,jquery,checkbox,onchange,Jquery,Checkbox,Onchange,我有两个复选框,分别是键和原声吉他。当用户选择一个时,我希望禁用另一个。我已经能够做到这一点,然而,我遇到的问题是,当用户取消选中他们的选择时,另一个仍然处于禁用状态 例如,如果用户选择“键”,“原声吉他”禁用,如果用户取消选中“键”,“原声吉他”仍处于禁用状态-我需要它,以便在未选中任何键时,您可以随时选择其中一个 这是我的密码: // disable acoustic guitar when keys is selected $("input[class='checkbox keys']")

我有两个复选框,分别是键和原声吉他。当用户选择一个时,我希望禁用另一个。我已经能够做到这一点,然而,我遇到的问题是,当用户取消选中他们的选择时,另一个仍然处于禁用状态

例如,如果用户选择“键”,“原声吉他”禁用,如果用户取消选中“键”,“原声吉他”仍处于禁用状态-我需要它,以便在未选中任何键时,您可以随时选择其中一个

这是我的密码:

// disable acoustic guitar when keys is selected
$("input[class='checkbox keys']").on('change', function () {
    if ($("input[class='checkbox keys']").length) {
        $("input[class='checkbox acou_guit']").prop('disabled',true);
        return;
    } else {
        $("input[class='checkbox acou_guit']").prop('disabled',false);
        return;
    }
});

// disable keys when acoustic guitar is selected
$("input[class='checkbox acou_guit']").on('change', function () {
    if($("input[class='checkbox acou_guit']").length) {
        $("input[class='checkbox keys']").prop('disabled',true);
        return;
    } else {
        $("input[class='checkbox keys']").prop('disabled',false);
        return;
    }
});

通过使用
length
属性,您可能会遇到奇怪的行为。建议改用
prop

而不是:

if($("input[class='checkbox acou_guit']").length) { }
尝试:


这可能无法通过复制和粘贴解决您的问题。但是,它应该向正确的方向发送信息。

在这种情况下,您的代码是错误的。您应该检查所选复选框的长度,而不仅仅是复选框的长度

$("input[class='keys']").on('change', function () {
    var checked = $("input[class='keys']:checked").length === 1 ? true : false;
        $("input[class='acou_guit']").prop('disabled',checked);

});

// disable keys when acoustic guitar is selected
$("input[class='acou_guit']").on('change', function () {
    var checked = $("input[class='acou_guit']:checked").length === 1 ? true : false;
        $("input[class='keys']").prop('disabled',checked);

});


如果答案对您有帮助,请将其标记为正确的

您是否考虑过使用单选按钮而不是复选框?同意,单选框更有意义,因为在任何时候您只选择了一个选项。顺便说一句,您不需要
返回语句。为您节省了4个LOC。谢谢大家,我想到了无线电设备,但是这个表单会根据其他选项而改变,例如,如果用户选择了不同的软件包,他们可以同时选择多个仪器。有没有办法通过复选框实现我所需要的?
$("input[class='keys']").on('change', function () {
    var checked = $("input[class='keys']:checked").length === 1 ? true : false;
        $("input[class='acou_guit']").prop('disabled',checked);

});

// disable keys when acoustic guitar is selected
$("input[class='acou_guit']").on('change', function () {
    var checked = $("input[class='acou_guit']:checked").length === 1 ? true : false;
        $("input[class='keys']").prop('disabled',checked);

});