Sélectionner plusieurs ID - Deux cases doivent être sélectionnés
Est-il un moyen pour deux ou plusieurs ID de l'être doivent être vérifiés avant de faire quelque chose.
Par exemple:
Si DEUX Case 1 et la Case 2 sont vérifiées alors l'événement se produit.
Mais si seulement 1 ou l'autre sont vérifiées par eux-mêmes, quelque chose se passe.
J'ai pensé que cela pourrait fonctionner, mais nope.
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);
}
J'espère que je vais expliquer cela correctement. J'ai cherché pendant trois jours et je suis coincé. Merci pour toute aide!
Vous devez vous connecter pour publier un commentaire.
La logique booléenne ftw! Donc je suis sûr que vous êtes à la recherche de ce qui est connu comme le exclusif ou, ou exclusif (XOR). Cela signifie que si une et une seule opérande est vrai, l'expression entière sera vrai. Si aucun opérande est vrai ou si les deux sont vrais, l'ensemble de l'expression est évaluée comme fausse. L'opérateur est
^
. Voici donc le code (emprunt de Chris comme le format de base)...En réalité, vous avez besoin seulement d'un OU de pour la deuxième
if
puisque nous sommes à l'aide d'unelse if
et la premièreif
couvre lorsque les deux sont cochés. Mais il n'est pas aussi cool et ne peuvent évidemment pas être utilisé par elle-même à faire la même chose (et c'est mieux pour les minifying *tousse tousse*).Profitez-en!
Je donnerais les cases d'une classe commune. Utilisez-les comme sélecteur et de compter les valeurs contrôlées. Alors, si les deux sont vérifiées faire quelque chose. Si l'on est cochée, puis vérifiez la valeur de l'un et de faire ce que vous devez en conséquence.
EDIT: Donc, dire, par exemple, que vous avez attribué à une classe commune de myCheckBoxes
De sorte que vous pourriez faire le pseudo-code suivant:
.myCheckBoxes
désigne les cases elles-mêmes, vous aurez besoin de supprimer l'espace à partir de votre sélection.Si les cases sont enveloppés par un élément:
Puis l'élément d'habillage peut avoir l'écouteur d'événement:
Je donnerais deux (ou autant que vous le souhaitez) de la même class='chk_option'. Si vous utilisez jQuery, alors vous pourriez faire ceci:
Lors de la définition de la sur cliquez sur événements pour chaque simplement faire ceci:
Vous pouvez le faire même avec plus intelligente de la fonction isSelectedBoth() où il pourrait revenir à quelque chose de plus utile que de vrais/faux, comme le numéro d'ordre de l'onu/case est cochée, un tableau d'éléments de l'onu/contrôler, etc.
Il y a deux questions dans votre code:
vous utilisez
$('#checkbox1 #checkbox2')
pour sélectionner les deux cases à cocher, mais sans une virgule c'est un “ancêtre à descendant” sélecteur et pas un plusieurs sélecteurla
is()
opérateur retournetrue
si au moins un des éléments sélectionnés, les matchs les arguments donnés. Donc, si vous utilisezif ($('#checkbox1, #checkbox2').is(':checked'))
c'est vrai chaque fois que l'un (mais pas nécessairement les deux cases sont cochéesAfin de faire quelque chose quand les deux les cases sont cochées, vous devez utiliser
is(':checked')
sur les deux séparément, comme dans le haut-voté répondre.Voici une démo montrant
is()
comportementJS:
HTML: