2010-08-19 6 views
3

J'essaie de prendre une série de cases à cocher sélectionnées et de créer une liste séparée par des virgules dans un champ de saisie. C'est un peu au-delà de mes compétences jQuery.Vous devez prendre les valeurs des cases à cocher slectionnées dans un fichier d'entrée, séparées par des virgules

Voici un échantillon du HTML:

<input type="checkbox" value="Bill" id="CAT_Custom_173676_0" name="CAT_Custom_173676" />Bill<br /> 
<input type="checkbox" value="Dan" id="CAT_Custom_173676_1" name="CAT_Custom_173676" />Dan<br /> 
<input type="checkbox" value="Francis" id="CAT_Custom_173676_2" name="CAT_Custom_173676" />Francis<br /> 

Je dois prendre les valeurs de ces cases à cocher et les insérer dans ce domaine

<input type="text" class="cat_textbox" id="CAT_Custom_172786" name="CAT_Custom_172786" maxlength="1024" /> 

Ainsi, si toutes les cases ci-dessus sont vérifiées , la valeur du champ de saisie serait "Bill, Dan, Francis".

Cet événement peut se produire lorsque le formulaire est soumis.

Toute aide serait appréciée.

Répondre

6

Vous pouvez utiliser map() ici pour créer un nouvel objet jQuery contenant les valeurs des cases cochées, puis utilisez get() pour obtenir un tableau, puis utilisez join(",")nb pour créer une chaîne séparée par des virgules de ces valeurs:

var arr = ​$("input:checked").map(function() { return this.value; }​); 
$("#CAT_Custom_172786").val(arr.get().join(",")); 

Example

nb: vous pouvez réellement omettre rejoindre(), car un tableau converti en une chaîne est automatiquement jointe à séparation des virgules. La préférence personnelle entre en jeu ici.

+0

Andy, cela fonctionne très bien. Y at-il un moyen de le rendre dynamique, ce qui signifie que l'utilisateur sélectionne les cases à cocher, le script met à jour le champ? –

+0

@mmsa: J'ai juste ajouté un exemple à la réponse qui fait cela, en appliquant un gestionnaire à l'événement * change() *. Consultez le lien de l'exemple, le code est tout ce qu'il vous faut. –

+0

Parfait! Merci pour la réponse rapide. Je vais devoir regarder dans la fonction map()! –

1

retournera également ce toutes les cases sélectionnées qui ont le nom « CAT_Custom_173676 »

alert($("input[name=CAT_Custom_173676]:checked").map(function() { 
return this.value;}).get().join(",")); 
Questions connexes