Comment renseigner un champ en fonction de la sélection dans le champ précédent?
-
07-07-2019 - |
Question
Dans la forme que nous avons conçue, nous avons un "États". champ qui permet à ses utilisateurs de sélectionner plusieurs états à la fois. Il y a un " Ville " champ qui doit être rempli conformément à la sélection dans le champ "Etat". champ. Les valeurs dans le champ "Ville". Les champs sont correctement renseignés si un seul état est sélectionné. Cependant, il ne s'affiche pas correctement lorsque plusieurs états sont sélectionnés.
Veuillez suggérer une solution Ruby identique.
La solution
Le problème est l'expression : avec
dans votre champ_observateurs
. document.getElementById ('usa_states _'). value
ne renverra qu'une seule valeur et non toutes les valeurs sélectionnées.
Je ne sais pas s'il existe un moyen de gérer cela automatiquement dans Rails, mais une solution consiste à écrire une fonction JavaScript qui construira une chaîne de toutes les valeurs sélectionnées, séparées par des virgules. par exemple
function selectedValuesAsString(multiselect) {
selectedValues = new Array();
for (i = 0; i < multiselect.length; i++) {
if (multiselect[i].selected) {
selectedValues.push(multiselect[i].value);
}
}
return selectedValues.join();
}
puis mettez à jour le : avec
pour qu'il ressemble à ceci:
:with => "'state='+selectedValuesAsString(document.getElementById('usa_states_')"
et divisez enfin les valeurs dans l'action de votre contrôleur.