选择多个ID - 必须选中两个复选框

Mar*_*k H 20 jquery jquery-selectors

在做某事之前是否需要检查两个或更多ID的方法.

例如:

如果选中BOTH Checkbox 1和Checkbox 2,则会发生事件.

但如果只有1个或其他自己检查,则会发生其他事情.

我认为这会起作用,但不是.

function toggleStatus() {
    if ($('#checkbox1 #checkbox2').is(':checked')) {
$('.option1 :input').attr('checked', true);
    } else {
$('.option1 :input').attr('checked', false);
}

function toggleStatus() {
    if ($('#checkbox1').is(':checked')) {
$('.option2 :input').attr('checked', true);
    } else {
$('.option2 :input').attr('checked', false);
}

function toggleStatus() {
    if ($('#checkbox2').is(':checked')) {
$('.option3 :input').attr('checked', true);
    } else {
$('.option3 :input').attr('checked', false);
}
Run Code Online (Sandbox Code Playgroud)

希望我正确解释这一点.我已经找了三天而且我被卡住了.谢谢你的帮助!

Chr*_*tte 63

$('#checkbox1, #checkbox2').change(function() {
   if ($('#checkbox1').is(':checked') && $('#checkbox2').is(':checked')) {
       // Do some stuff if both boxes are checked...
   }
});
Run Code Online (Sandbox Code Playgroud)

  • 如果这解决了您的解决方案,您应该将其标记为您问题的答案. (14认同)

Plu*_*uto 8

布尔逻辑ftw!所以我很确定你正在寻找所谓的独家或者XOR.这意味着如果只有一个且只有一个操作数为true,则整个表达式将为true.如果两个操作数都不为真或两者都为真,则整个表达式将计算为false.对此的运营商是^.所以这是代码(借用Chris作为基本格式)......

$('#checkbox1, #checkbox2').change(function() {
    if($('#checkbox1').is(':checked') && $('#checkbox2').is(':checked')) {
        // Both are checked
    }
    else if($('#checkbox1').is(':checked') ^ $('#checkbox2').is(':checked')) {
        // Exactly one is checked
    }
});
Run Code Online (Sandbox Code Playgroud)

实际上,你只需要第二个OR就可以了,if因为我们使用了一个else if和第一个if封面,当两个都被选中时.但它并不那么酷,显然不能单独使用它来做同样的事情(并且更好地缩小*咳嗽咳嗽*).

请享用!


spi*_*non 4

我会给复选框一个公共类。然后使用它作为选择器并计算选中的值。然后,如果检查了两个,则执行某些操作。如果检查了一项,则检查该一项的值并相应地执行您需要的操作。

编辑:例如,您分配了一个公共类 myCheckBoxes

所以你可以执行以下伪代码:

var myCheckBoxes = $('.myCheckBoxes:checked') //not sure on selector

if (myCheckBoxes.length == 2)
    //do something because both are checked
else if (myCheckBoxes.length == 1)
{
    if (myCheckBoxes.val() == "A")
        // do something because A was checked
    else if (myCheckBoxes.val() == "B")
        // do something because B was checked
}
Run Code Online (Sandbox Code Playgroud)