28 votes

Utilisation de jQuery pour récupérer la valeur de plusieurs cases à cocher et la sortir sous forme de chaîne séparée par des virgules.

J'ai plusieurs cases à cocher comme ci-dessous,

<li><input type="checkbox" name="areaofinterest" value="home_coo" id="home_coo" class="Checkbox" > Cooking</li>
    <li><input type="checkbox" name="areaofinterest" value="home_cra" id="home_cra" class="Checkbox"> Crafts</li>
    <li><input type="checkbox" name="areaofinterest" value="home_dec" id="home_dec" class="Checkbox"> Decorating</li>
    <li><input type="checkbox" name="areaofinterest" value="home_ent" id="home_ent" class="Checkbox"> Entertaining</li>
    <li><input type="checkbox" name="areaofinterest" value="home_gar" id="home_gar" class="Checkbox"> Gardening</li>
    <li><input type="checkbox" name="areaofinterest" value="home_hom" id="home_hom" class="Checkbox"> Home Improvement</li>
    <li><input type="checkbox" name="areaofinterest" value="home_mar" id="home_mar" class="Checkbox"> Marriage</li>
    <li><input type="checkbox" name="areaofinterest" value="home_par" id="home_par" class="Checkbox"> Parenting</li>
    <li><input type="checkbox" name="areaofinterest" value="home_pet" id="home_pet" class="Checkbox" > Pets</li>
    <li><input type="checkbox" name="areaofinterest" value="home_ret" id="home_ret" class="Checkbox"> Retirement</li>

Comment puis-je utiliser jQuery pour obtenir les valeurs cochées et produire une sortie comme areaofinterest="home_coo,home_mar,home_pet" ?

Merci beaucoup.

115voto

Anthony Grist Points 25966

Utilisez le .map() fonction :

$('.Checkbox:checked').map(function() {return this.value;}).get().join(',')

En décomposant ça :

$('.Checkbox:checked') sélectionne les cases à cocher cochées.

.map(function() {return this.value;}) crée un objet jQuery contenant un tableau des valeurs des cases à cocher cochées.

.get() renvoie le tableau actuel.

.join(','); joint tous les éléments du tableau dans une chaîne, séparés par une virgule.

DEMO de travail

4voto

adeneo Points 135949
var areaofinterest = '';

$('[name="areaofinterest"]').each(function(i,e) {
    var comma = areaofinterest.length===0?'':',';
    areaofinterest += (comma+e.value);
});

Pour obtenir uniquement la valeur des cases cochées :

var areaofinterest = '';

$('[name="areaofinterest"]').each(function(i,e) {
    if ($(e).is(':checked')) {
        var comma = areaofinterest.length===0?'':',';
        areaofinterest += (comma+e.value);
    }
});

FIDDLE

Vous pouvez aussi le faire :

var areaofinterest = [];
$('[name="areaofinterest"]:checked').each(function(i,e) {
    areaofinterest.push(e.value);
});

areaofinterest = areaofinterest.join(',');

Et il y a probablement un tas d'autres façons de faire ça ?

0voto

ŁukaszW.pl Points 4769
var values = "";
$("checkbox[name=areaofinterest]").each(function() { 
    values += $(this).val() + ",";
});

values = values.substring(0, values.length - 2);

0voto

Paul Aldred-Bann Points 2976

Essayez quelque chose comme ça :

var areaofinterest= "";

$("input[type=\"checkbox\"]").each(function() {
    if ($(this).attr("checked")) {
        if (areaofinterest !== "") areaofinterest += ",";

        areaofinterest += $(this).value();
    }
});

0voto

Anurag Points 227

Ou vous pouvez utiliser un tableau comme indiqué ci-dessous.

 var checkBoxArray = new Array();
 var areaofinterest = '';

 $(':checkbox:checked').each(function(i){
        checkBoxArray .push($(this).attr("value"));

});

  if (checkBoxArray .length == 0) {
     } else {
     while (checkBoxArray .length != 0) {
            if (checkBoxArray .length == 1) {
                areaofinterest += checkBoxArray .pop();
            } else {
                areaofinterest += (checkBoxArray .pop() + ",");
                 }
            }
}
console.log(areaofinterest);

mais vous obtiendrez String dans l'ordre inverse.

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