jQuery: tester si la case n'est PAS cochée

110

J'ai du mal à comprendre cela. J'ai deux cases à cocher (à l'avenir j'en aurai plus):

  • checkSurfaceEnvironment-1
  • checkSurfaceEnvironment-2

Fondamentalement, je veux écrire une instruction if et tester si l'un d'entre eux est vérifié et un autre n'est PAS vérifié. Quelle est la manière la plus simple d'accomplir ce qui suit:

if ( $("#checkSurfaceEnvironment-1").attr('checked', true) &&
     $("#checkSurfaceEnvironment-2").is('**(NOT??)** :checked') ) {
        // do something
}
user1040259
la source
3
Utilisez ||not &&pour vérifier si l'un ou l'autre est coché. &&vérifie si les deux sont cochés.
j08691

Réponses:

213

Une façon fiable que j'utilise est:

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

Si vous souhaitez parcourir des é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é cochée qui stocke l'état réel de la case à cocher. Si vous le souhaitez, vous pouvez inspecter la page et essayer de cocher et décocher une case, et vous remarquerez que l'attribut «coché» (s'il est présent) restera le même. Cet attribut représente uniquement l' état initial de la case à cocher, et non l' état actuel . L'état actuel est stocké dans la propriété vérifiée de l'élément dom pour cette case à cocher.

Voir les propriétés et attributs en HTML

Pablo Mescher
la source
2
Umm ... ça va juste prendrechecked = true
Naftali aka Neal
@Pablo - Vérifiez ma réponse ci-dessous, qui est également une option fiable / apt.
Aneesh Vijendran
@PabloMescher Hé, pouvez-vous m'aider s'il vous plaît? Je veux réellement déterminer quelle (s) case (s) est / sont cochée (s) parmi plusieurs? Et, activez / désactivez la zone de texte à côté. Toute aide sera grandement appréciée.
1lastBr3ath
@ 1lastBr3ath bien sûr, si vous utilisez jQuery, il vous suffit de trouver un sélecteur pour la zone de texte relative à la case à cocher et d'utiliser mon deuxième exemple. Cela ressemblerait à quelque chose comme if ($ (this) .prop ('checked')) {$ (this) .find ("<textboxSelector>") .attr ("disabled", true); }
Pablo Mescher
1
@Stophface dans ce cas, cette propriété sera toujours un booléen car il s'agit d'une propriété calculée et non d'une chaîne, vous pouvez donc vous en tirer avec ==. Il est sage de toujours utiliser === car ce n'est pas toujours le cas
Pablo Mescher
77
if (!$("#checkSurfaceEnvironment-1").is(":checked")) {
    // do something if the checkbox is NOT checked
}
shweta
la source
31

Vous pouvez également utiliser la .not()méthode jQuery ou le :not()sélecteur:

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

Exemple JSFiddle


Notes complémentaires

À partir de la documentation de l'API jQuery pour le :not() sélecteur :

La méthode .not () finira par vous fournir des sélections plus lisibles que de pousser des sélecteurs ou des variables complexes dans un filtre de sélecteur : not () . Dans la plupart des cas, c'est un meilleur choix.

Aneesh Vijendran
la source
1
! $ ("# checkSurfaceEnvironment"). is (": checked") renvoie un booléen. C'est vrai si la case n'est pas cochée. $ ('# checkSurfaceEnvironment'). not (': checked') renvoie un tableau d'éléments DOM. Tester ceci avec 'if' renvoie 'true' même s'il n'y avait pas de correspondance avec le sélecteur et que le tableau est vide. La seule façon dont votre réponse pourrait être correcte est si vous avez testé i $ ('# checkSurfaceEnvironment'). Not (': checked'). Length, qui renverra 0 ou 1.
Thibault Witzig
22

Une manière alternative:

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 de basculer l'attribut vérifié.

Trufa
la source
9
if ( $("#checkSurfaceEnvironment-1").is(":checked") && $("#checkSurfaceEnvironment-2").not(":checked") )
Zoltan Toth
la source
6

Je cherchais une implémentation plus directe comme l'avijendr l'a suggéré.

J'ai eu un peu de mal avec sa syntaxe, mais j'ai réussi à faire fonctionner:

if ($('.user-forms input[id*="chkPrint"]:not(:checked)').length > 0)

Dans mon cas, j'avais une table avec une classe user-forms, et je vérifiais si l' une des cases qui avaient la chaîne checkPrintdans leur idétaient sans contrôle.

MsGirlPerl
la source
5

Je pense que le moyen le plus simple (avec jQuery) de vérifier si la case est cochée ou NON est:

si 'vérifié':

if ($(this).is(':checked')) {
// I'm checked let's do something
}

si NON 'coché':

if (!$(this).is(':checked')) {
// I'm NOT checked let's do something
}
Michael Stachura
la source
4

Ici, j'ai un extrait de cette question.

$(function(){
   $("#buttoncheck").click(function(){
        if($('[type="checkbox"]').is(":checked")){
            $('.checkboxStatus').html("Congratulations! "+$('[type="checkbox"]:checked').length+" checkbox checked");
        }else{
            $('.checkboxStatus').html("Sorry! Checkbox is not checked");
         }
         return false;
   })
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <p>
    <label>
      <input type="checkbox" name="CheckboxGroup1" value="checkbox" id="CheckboxGroup1_0">
      Checkbox</label>
    <br>
    <label>
      <input type="checkbox" name="CheckboxGroup1_" value="checkbox" id="CheckboxGroup1_1">
      Checkbox</label>
    <br>
  </p>
  <p>
    <input type="reset" value="Reset">
    <input type="submit" id="buttoncheck" value="Check">
  </p>
  <p class="checkboxStatus"></p>
</form>

Ashok
la source
3

Pour le faire avec .attr()comme vous l'avez fait, pour voir si c'est vérifié, ce serait .attr("checked", "checked"), et si ce n'est pas le cas, ce serait.attr("checked") == undefined

ayyp
la source
1

Renvoie true si toutes les cases à cocher sont cochées dans un div

function all_checked (id_div){
 all_checked = true;

 $(id_div+' input[type="checkbox"]').each(function() { 
    all_checked = all_checked && $('this').prop('checked');
 }

 return all_checked;
}
Martin Da Rosa
la source
1

État simple et facile à vérifier ou non vérifié

<input type="checkbox" id="ev-click" name="" value="" >

<script>
    $( "#ev-click" ).click(function() {
        if(this.checked){
            alert('checked');
        }
        if(!this.checked){
            alert('Unchecked');
        }
    });
</script>
Ravi Bhoraniya
la source
1

essaye celui-là

if ($("#checkSurfaceEnvironment-1:checked").length>0) {
    //your code in case of NOT checked
}

Dans le code ci-dessus, sélectionnez l'élément par ID, (#checkSurfaceEnvironment-1)puis filtrez son état vérifié par (:checked)filtre.

Il renverra un tableau d'objet élément vérifié. S'il existe un objet dans le tableau, la condition if sera satisfaite.

Sonker Satish Kumar
la source
Bien que votre réponse puisse aider, vous devriez au moins expliquer pourquoi. Dans l'état actuel des choses, votre réponse a été transmise dans la file d'attente de modération des messages de faible qualité (où je la visualise). Je vous suggère de modifier votre réponse pour ajouter une explication.
Chris Spittles
1

Vous pouvez vérifier l'état de deux manières.

if ($("#checkSurfaceEnvironment-1").is(":checked")) {
    // Put your code here if checkbox is checked
}

OU vous pouvez également utiliser celui-ci

if($("#checkSurfaceEnvironment-1").prop('checked') == true){
    // Put your code here if checkbox is checked
}

J'espère que cela vous sera utile.

Gaurang Sondagar
la source
1

Voici la manière la plus simple donnée

 <script type="text/javascript">

        $(document).ready(function () {
            $("#chk_selall").change("click", function () {

                if (this.checked)
                {
                    //do something
                }
                if (!this.checked)
                {
                    //do something

                }

            });

        });

    </script>
Debendra Dash
la source
0

J'ai utilisé cela et j'ai travaillé pour moi!

$("checkbox selector").click(function() {
    if($(this).prop('checked')==true){
       do what you need!
    }
});
Seyed Mohammad Hosseini
la source
0

Je sais que cela a déjà été répondu, mais c'est quand même un bon moyen de le faire:

if ($("#checkbox").is(":checked")==false) {
    //Do stuff here like: $(".span").html("<span>Lorem</span>");
}
Bonjour le monde
la source
0
if($("#checkbox1").prop('checked') == false){
    alert('checkbox is not checked');
    //do something
}
else
{ 
    alert('checkbox is checked');
}
Rutvik kakadiya
la source
4
Bien que cela puisse répondre à la question des auteurs, il manque des mots explicatifs et / ou des liens vers la documentation. Les extraits de code bruts ne sont pas très utiles sans quelques phrases autour d'eux. Vous pouvez également trouver comment rédiger une bonne réponse très utile. Veuillez modifier votre réponse - De l'avis
Nick
-4
$("#chkFruits_0,#chkFruits_1,#chkFruits_2,#chkFruits_3,#chkFruits_4").change(function () {
        var item = $("#chkFruits_0,#chkFruits_1,#chkFruits_2,#chkFruits_3,#chkFruits_4");
    if (item.is(":checked")==true) {
        //execute your code here
    }

    else if (item.is(":not(:checked)"))
    {
        //execute your code here
    }

});
Cool_Yusuf
la source