Bonjour,
Sur J!5 j'ai créé un formulaire d'adhésion pour une asso avec BreezingForms et les excellents tutos d'Eddy. En front, l'utilisateur qui remplit son bulletin d'adhésion choisit sa licence dans un select :
1;IRA 20€;20
0;IMPN 50€;50
0;FRA 80€;80
0;FMPN 100€;100
Derrière, il y a un script d'action sur ce champ pour récupérer le montant de la licence choisie et l'entrer dans un calcul de montant total avec d'autres champs à cocher ou pas. Et pour afficher ou non un panneau : si le select contient 20 ou 50, on n'affiche pas le panneau. S'il contient 80 ou 100, on affiche le panneau.
Ca fonctionne très bien.
Mais pour le responsable de l'asso, c'est un peu compliqué pour aller modifier le formulaire quand le tarif des licences change.
Donc je pensais créer 4 champs texte (qui seraient cachés en front) dans lesquels il irait mettre les montants (dans l'édition du formulaire en BO), ce qui mettrait à jour le select avant de l'afficher en front.
J'ai créé une fonction en js que j'ai mise dans le script d'initialisation du formulaire, ça ne marche pas. Que ce soit à l'intérieur de la function_bulletin_init (qui contient déjà une fonction pour des calculs de dates) ou juste après.
Dans le script d'initialisation du champ select, ça ne marche pas non plus. Je veux dire par là, pas d'erreur dans la console, mais le select n'est pas modifié.
Peut-être que ce n'est pas réalisable ? Ou je ne procède pas de la bonne façon ?
Voici la dernière mouture du code que j'avais mis dans le script d'initiation du form
C'est vraiment dommage que ce composant ne soit plus suivi. Il est incroyable. Je n'ai jamais vu de composant aussi puissant quel que soit le CMS.
Bref, si quelqu'un a des pistes, ce serait génial. Si c'est chose impossible à faire ... tant pis
Sur J!5 j'ai créé un formulaire d'adhésion pour une asso avec BreezingForms et les excellents tutos d'Eddy. En front, l'utilisateur qui remplit son bulletin d'adhésion choisit sa licence dans un select :
1;IRA 20€;20
0;IMPN 50€;50
0;FRA 80€;80
0;FMPN 100€;100
Derrière, il y a un script d'action sur ce champ pour récupérer le montant de la licence choisie et l'entrer dans un calcul de montant total avec d'autres champs à cocher ou pas. Et pour afficher ou non un panneau : si le select contient 20 ou 50, on n'affiche pas le panneau. S'il contient 80 ou 100, on affiche le panneau.
Ca fonctionne très bien.
Mais pour le responsable de l'asso, c'est un peu compliqué pour aller modifier le formulaire quand le tarif des licences change.
Donc je pensais créer 4 champs texte (qui seraient cachés en front) dans lesquels il irait mettre les montants (dans l'édition du formulaire en BO), ce qui mettrait à jour le select avant de l'afficher en front.
J'ai créé une fonction en js que j'ai mise dans le script d'initialisation du formulaire, ça ne marche pas. Que ce soit à l'intérieur de la function_bulletin_init (qui contient déjà une fonction pour des calculs de dates) ou juste après.
Dans le script d'initialisation du champ select, ça ne marche pas non plus. Je veux dire par là, pas d'erreur dans la console, mais le select n'est pas modifié.
Peut-être que ce n'est pas réalisable ? Ou je ne procède pas de la bonne façon ?
Voici la dernière mouture du code que j'avais mis dans le script d'initiation du form
Code:
function updateSelectOptions() { // Récupérer les valeurs des champs texte var ira = ff_getElementByName('ira').value; var impn = ff_getElementByName('IMPN').value; var fra = ff_getElementByName('FRA').value; var fmpn = ff_getElementByName('FMPN').value; var affil = ff_getElementByName('dejaaffilie').value; console.log("Valeurs récupérées :"); console.log("IRA:", ira); console.log("IMPN:", impn); console.log("FRA:", fra); console.log("FMPN:", fmpn); console.log("Déjà affilié:", affil); if (ira && impn && fra && fmpn && affil) { ira = ira.value; impn = impn.value; fra = fra.value; fmpn = fmpn.value; affil = affil.value; } // Récupérer le champ select var select = ff_getElementByName('licence')[0]; // Vider les options existantes avant de les mettre à jour select.innerHTML = ""; // Ajouter les nouvelles options if (ira !== '') { select.options.add(new Option('IRA ' + ira, ira)); } if (impn !== '') { select.options.add(new Option('IMPN ' + impn, impn)); } if (fra !== '') { select.options.add(new Option('FRA ' + fra, fra)); } if (fmpn !== '') { select.options.add(new Option('FMPN ' + fmpn, fmpn)); } if (affil !== '') { select.options.add(new Option('Déjà affilié ' + affil, affil)); } }
Bref, si quelqu'un a des pistes, ce serait génial. Si c'est chose impossible à faire ... tant pis
Commentaire