Utiliser jquery pour obtenir toutes les cases cochées avec un certain nom de classe


215

Je sais que je peux obtenir toutes les cases à cocher sur une page en utilisant ceci:

$('input[type=checkbox]').each(function () {
    var sThisVal = (this.checked ? $(this).val() : "");
});

Mais j'utilise maintenant ceci sur une page qui a d'autres cases à cocher que je ne veux pas inclure. Comment changer le code ci-dessus pour ne regarder que les cases à cocher qui ont une certaine classe dessus?


Dois-je mettre à jour le titre pour dire à la classplace de name?
Russ Cam

@Russ Cam - déjà fait
leora

$ ('input [type = checkbox] :checked') fonctionnera également.
super cool

Réponses:


392

$('.theClass:checkbox:checked')vous donnera toutes les cases cochées avec la classe theClass.


9
Agréable. De plus, $ ('. TheClass: checkbox: not (: checked)') obtiendra toutes les cases non cochées.
Venugopal M

Puis-je faire cela pour tous les cases à cocher avec nom?
FluffyBeing

Comment puis-je ajouter une autre classe sur les éléments cochés? Je veux montrer la bordure des éléments d'entrée cochés.
Najam Us Saqib

120
$('input:checkbox.class').each(function () {
       var sThisVal = (this.checked ? $(this).val() : "");
  });

Un exemple à démontrer.

:checkboxest un sélecteur de cases à cocher (en fait, vous pouvez omettre la inputpartie du sélecteur, bien que j'aie trouvé des cas de niche où vous obtiendriez des résultats étranges en faisant cela dans les versions antérieures de la bibliothèque. Je suis sûr qu'ils sont corrigés dans les versions ultérieures). .classest le sélecteur de l'attribut de classe d'élément contenant class.


9
Notes Jquery sur: la case à cocher recommande de s'en tenir à [type = "case à cocher"]. $ ('[type = "checkbox"]. class') .... ou $ ('input [type = "checkbox"]. class')
TSmith

@TSmith avez-vous une référence?
Russ Cam

9
J'ai lu ça d'ici: api.jquery.com/checkbox-selector ... sous "Notes supplémentaires"
TSmith

73

.mapExemple obligatoire :

var checkedVals = $('.theClass:checkbox:checked').map(function() {
    return this.value;
}).get();
alert(checkedVals.join(","));

3
$ ('input.theClass: vérifié'). map (function () {return this.value}). get (). join (',');
Fedir RYKHTIK

@Fedir: votre commande donne on,oncomme résultat ('on' pour chaque case cochée)
Jay

@Jay Vous devez définir les attributs de valeur de vos cases à cocher pour obtenir leur valeur dans une chaîne séparée par un coma
Kamran Ali

21
$('input.yourClass:checkbox:checked').each(function () {
    var sThisVal = $(this).val();
});

Cela obtiendrait toutes les cases à cocher du nom de classe "yourClass". J'aime cet exemple car il utilise le sélecteur jQuery vérifié au lieu de faire une vérification conditionnelle. Personnellement, j'utiliserais également un tableau pour stocker la valeur, puis les utiliser au besoin, comme:

var arr = [];
$('input.yourClass:checkbox:checked').each(function () {
    arr.push($(this).val());
});

S'il était nécessaire de stocker les valeurs dans un tableau, cela .mappourrait être une alternative plus agréable, comme l'illustre la réponse de karim79.
duplode

1
merci :) j'avais besoin de trouver toutes les cases cochées et votre réponse le fait.
ufk

13

Si vous devez obtenir la valeur de toutes les cases à cocher en tant que tableau:

let myArray = (function() {
    let a = [];
    $(".checkboxes:checked").each(function() {
        a.push(this.value);
    });
    return a;
})()

10
 $('input.theclass[type=checkbox]').each(function () {
   var sThisVal = (this.checked ? $(this).val() : "");
 });

8

Je ne sais pas si cela vous aide dans votre cas particulier, et je ne sais pas si dans votre cas, les cases à cocher que vous souhaitez inclure uniquement font toutes partie d'un seul formulaire ou div ou tableau, mais vous pouvez toujours sélectionner toutes les cases à cocher à l'intérieur d'un élément spécifique. Par exemple:

<ul id="selective">
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
</ul>

Ensuite, en utilisant le jQuery suivant, il passe UNIQUEMENT par les cases à cocher dans cet UL avec id = "selective":

$('#selective input:checkbox').each(function () {
 var sThisVal = (this.checked ? $(this).val() : "");
});


7

Vous pouvez utiliser quelque chose comme ceci:
HTML:

<div><input class="yourClass" type="checkbox" value="1" checked></div>
<div><input class="yourClass" type="checkbox" value="2"></div>
<div><input class="yourClass" type="checkbox" value="3" checked></div>
<div><input class="yourClass" type="checkbox" value="4"></div>


JQuery:

$(".yourClass:checkbox").filter(":checked")


Il choisira des valeurs de 1 et 3.


C'est la meilleure réponse.
Marcos Buarque

7

Un moyen simple pour obtenir toutes les valeurs dans un tableau

var valores = (function () {
    var valor = [];
    $('input.className[type=checkbox]').each(function () {
        if (this.checked)
            valor.push($(this).val());
    });
    return valor;

})();

console.log(valores);

7

Vous pouvez essayer comme ça

let values = (function() {
                let a = [];
                $(".chkboxes:checked").each(function() {
                    a.push($(this).val());
                });
                return a;
            })();

4
<input type="checkbox" id="Checkbox1" class = "chk" value = "1" />
<input type="checkbox" id="Checkbox2" class = "chk" value = "2" />
<input type="checkbox" id="Checkbox3" class = "chk" value = "3" />
<input type="checkbox" id="Checkbox4" class = "chk" value = "4" />
<input type="button" id="demo" value = "Demo" />

<script type = "text/javascript" src = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
    $("#demo").live("click", function () {
        $("input:checkbox[class=chk]:checked").each(function () {
            alert("Id: " + $(this).attr("id") + " Value: " + $(this).val());
        });
    });
</script>

http://www.jqueryfaqs.com/Articles/Get-values-of-all-checked-checkboxes-by-class-name-using-jQuery.aspx


3

Je sais que cela a déjà un tas de bonnes réponses sur cette question, mais j'ai trouvé cela en parcourant et je le trouve vraiment facile à utiliser. Je pensais que je partagerais pour tous ceux qui cherchent.

HTML:

<fieldset>
    <!-- these will be affected by check all -->
    <div><input type="checkbox" class="checkall"> Check all</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
</fieldset>
<fieldset>
    <!-- these won't be affected by check all; different field set -->
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
</fieldset>

jQuery:

$(function () {
    $('.checkall').on('click', function () {
        $(this).closest('fieldset').find(':checkbox').prop('checked', this.checked);
    });
});

Référence: "Vérifier tout" le plus facile avec jQuery


1
$(document).ready(function(){
    $('input.checkD[type="checkbox"]').click(function(){
        if($(this).prop("checked") == true){
            $(this).val('true');
        }
        else if($(this).prop("checked") == false){
            $(this).val('false');
        }
    });
});

veuillez envisager d'ajouter un commentaire pour expliquer votre réponse afin qu'il soit plus facile à comprendre pour les non
Simas Joneliunas

-1
$("input[name='<your_name_of_selected_group_checkboxes>']:checked").val()

1
veuillez expliquer en quoi consiste ce code. Cela aidera les autres à comprendre
Shafin Mahmud
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.