146 votes

jQuery : Test si la case à cocher n'est PAS cochée

J'ai du mal à comprendre ce qui se passe. J'ai deux cases à cocher (j'en aurai d'autres à l'avenir) :

  • checkSurfaceEnvironment-1
  • checkSurfaceEnvironment-2

En fait, je veux écrire une instruction if et tester si l'une d'entre elles est vérifiée et si une autre ne l'est PAS. Quel est le moyen le plus simple d'accomplir ce qui suit :

if ( $("#checkSurfaceEnvironment-1").attr('checked', true) &&
     $("#checkSurfaceEnvironment-2").is('**(NOT??)** :checked') ) {
        // do something
}

3 votes

Utilisez || pas && pour vérifier si soit est vérifié. && vérifie si les deux sont vérifiés.

262voto

Pablo Mescher Points 1849

Une méthode fiable que j'utilise est :

if($("#checkSurfaceEnvironment-1").prop('checked') == true){
    //do something
}

Si vous voulez itérer sur les éléments cochés, utilisez l'élément parent.

$("#parentId").find("checkbox").each(function(){
    if ($(this).prop('checked')==true){ 
        //do something
    }
});

Plus d'informations :

Cela fonctionne bien car toutes les cases à cocher ont une propriété checked qui stocke l'état réel de la case à cocher. Si vous le souhaitez, vous pouvez inspecter la page et essayer de cocher et de décocher une case à cocher, et vous remarquerez que l'attribut "checked" (s'il est présent) restera le même. Cet attribut ne représente que le état initial de la case à cocher, et non le actuel l'état. L'état actuel est stocké dans la propriété checked de l'élément dom pour cette case à cocher.

Voir Propriétés et attributs en HTML

2 votes

Umm... ça va juste mettre checked = true

0 votes

@Pablo - Vérifiez ma réponse ci-dessous, qui est également une option fiable/apt.

0 votes

@PabloMescher Hé, tu peux m'aider ? Je veux en fait déterminer quelle(s) case(s) est/sont cochée(s) parmi plusieurs ? Et, activer/désactiver la zone de texte à côté d'elle. Toute aide sera très appréciée.

102voto

shweta Points 3879
if (!$("#checkSurfaceEnvironment-1").is(":checked")) {
    // do something if the checkbox is NOT checked
}

34voto

avijendr Points 777

Vous pouvez également utiliser soit jQuery .not() ou :not() sélecteur :

if ($('#checkSurfaceEnvironment').not(':checked').length) {
    // do stuff for not selected
}

Exemple de JSFiddle


Notes supplémentaires

D'après la documentation de l'API jQuery pour l'option :not() sélecteur :

Le site .not() méthode finira par vous fournir des informations plus lisibles plus lisibles qu'en introduisant des sélecteurs ou des variables complexes dans un fichier :pas() sélecteur filtre. Dans la plupart des cas, c'est un meilleur choix.

1 votes

!$("#checkSurfaceEnvironment").is(":checked") renvoie un booléen. Il est vrai si la case à cocher n'est pas cochée. $('#checkSurfaceEnvironment').not(':checked') renvoie un tableau d'éléments DOM. Le test avec 'if' renvoie 'true' même si le sélecteur ne correspond pas et que le tableau est vide. La seule façon pour que votre réponse soit correcte est de tester i$('#checkSurfaceEnvironment').not(':checked').length, qui renverra 0 ou 1.

24voto

Trufa Points 10379

Une autre façon de faire :

Voici un exemple de travail et voici le code, vous devez également utiliser prop.

$('input[type="checkbox"]').mouseenter(function() { 
    if ($(this).is(':checked')) {
        //$(this).prop('checked',false);
        alert("is checked");
    } else {
         //$(this).prop('checked',true);
        alert("not checked");
    }
});

J'ai commenté la façon d'activer l'attribut "checked".

11voto

Zoltan Toth Points 28257
if ( $("#checkSurfaceEnvironment-1").is(":checked") && $("#checkSurfaceEnvironment-2").not(":checked") )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X