2012-01-24 4 views
1

J'ai plusieurs cases à cocher avec name=ap[] et je veux utiliser jquery pour convertir les valeurs de case à cocher cochées en valeurs séparées par des virgules afin que je puisse analyser comme une chaîne de requête. Comment j'irais à propos de ça? .serialize() rend la chaîne plus compliquéeFormat checkbox array to csv

Répondre

6

jQuery.fn.map itterates sur un ensemble jQuery, et retourne un nouveau tableau (à l'intérieur d'une enveloppe jQuery) qui contient des noeuds égal à la valeur de retour de chaque itterarion. Vous pouvez alors obtenir ce tableau en appelant jQuery.fn.get, utilisez ce tableau pour tout ce que vous voulez:

$(':checkbox:checked').map(function(){ 
    return $(this).val(); // value will be in the returned array 
}) 
.get() // extract the new array from the jQuery object 
.join(','); //do anything you want with the array 

Dans votre cas, cela peut être appliqué en tant que tel:

var list = $(':checkbox[name="ap[]"]:checked').map(function(){ 
    return $(this).val(); 
}).get().join(','); 

alert(list); 
+0

merci @avaq j'ai regardé .map mais n'a pas tout à fait le comprendre pleinement. Alors, comment pourrais-je accéder/alerter le csv? 'alert ($ (: case à cocher: cochée) .get());' ?? – JPickup

+0

Je vais modifier ma réponse pour répondre à votre question plus précisément, un moment. – Avaq

+0

est-ce aussi plus efficace que d'utiliser .each ou simplement préféré car c'est moins de code? – JPickup

1
var list = ''; 
$("[name=ap[]]").is("checked").each(function(){ 
    list += $(this).val() + ','; 
}); 
+0

+1 pour la simplicité, mais a besoin d'un imo de clôture-poste, cela va laisser une virgule traînante –

0
var csv=""; 
$('input:checkbox[name="ap[]"]:checked').each(function(index) { 

if(csv !="") csv+=","; 

csv+=$(this).val(); 

}); 
+0

Grand merci:) Juste pour référence future qu'est-ce que vous mettez l'index pour? – JPickup

+0

C'est l'indice de l'élément 0 le premier, deux le troisième, disons que vous devez faire quelque chose avec le troisième élément, vous pouvez le faire en utilisant son index – Ashraf