Si vous voulez transmettre les valeurs comme une chaîne, par exemple délimité par des virgules comme vous l'avez mentionné dans jquery vous pouvez définir la valeur à l'aide .map()
, comme ceci:
$(".mySelector:checkbox").change(function() {
var values = $(".mySelector:checkbox:checked").map(function() {
return this.value;
}).get().join(', ');
$("#myHiddenInput").val(values);
});
Chaque fois qu'une case à cocher change, il va refaire la partie chaîne, re-sérialiser le résultat, donc sur la publication, il devrait être la sélection actuelle de l'interface utilisateur. .map()
obtient un tableau des valeurs des éléments :checked
avec votre classe mySelector
, puis nous faisons juste un .join()
pour convertir ce tableau en une chaîne et en utilisant .val()
pour définir l'entrée cachée pour cela à cette chaîne.
Cela suppose un balisage comme ceci:
<input type="checkbox" class="mySelector" value="tickOne" />
<input type="checkbox" class="mySelector" value="tickTwo" />
....
<input type="hidden" id="myHiddenInput" />
You can give it a try here
1) Pas assez de détails. 2) La dénormalisation comme celle-ci est mauvaise, ne le faites pas. – RedFilter
@RedFilter - Si les valeurs ne sont que pour l'affichage de l'interface utilisateur, la dénormalisation ne peut pas être mauvaise, elle peut être beaucoup plus efficace ... vous ne pouvez pas dire que c'est mauvais, vous avez besoin de plus d'informations pour prendre cette décision, par ex. sera-t-il jamais questionné? –
@RedFilter, et si c'est un simple CRM qu'il construit, c'est un gestionnaire de formulaire de contact. La dénormalisation n'est pas toujours une mauvaise chose. –