Somme pondérée des champs numériques dans un framaforms

Autre question pendant que j’y suis (dis-moi si je dois ouvrir une nouvelle discussion) :

J’aimerais afficher le total en euros, soit la somme de toutes les valeurs entrées dans chaque champ « nombre » pondérées par le prix correspondant. Est-ce quelque chose de possible ? Peut-on récupérer les valeurs des champs dans champ « balisage » et y mettre du code javascript ? L’idéal serait d’avoir le total en bas du formulaire qui s’actualise à mesure que les champs sont remplis, mais le total affiché simplement sur la page de confirmation me conviendrait aussi.

Merci !

Bonjour,

Je suis toujours à la recherche d’une solution. Est-ce que quelqu’un sait si c’est quelque chose de possible avec la version actuelle de framaforms ?

Merci. :slightly_smiling_face:

Hello,
je ne veux pas être défaitiste, mais je ne crois pas que ce soit possible. En général, quand personne ne répond à une question, c’est que personne n’a pas la solution (du moins sans avoir cherché à la développer lui-même).
As-tu essayé ton approche en injectant du javascript dans un composant « balise HTML » ?

Salut @Ned,

Merci pour ta réponse. C’est justement ce que j’aimerais tester mais je ne suis pas développeur et ne sait pas trop comment tester ça.

Avant de découvrir Framaforms, j’avais réussi à faire une page HTML avec une partie codée en javascript pour faire la somme pondérée des champs numériques. Voici à quoi ressemble ce code :

<script>
		var calculer_la_somme = function() {
			var cerises  = document.getElementsByName('cerises');
			var abricots  = document.getElementsByName('abricots_hargrand_extra');
			var nectarines = document.getElementsByName('nect_jaunes_carene_extra');
			var total = cerises[0].value * 25 + abricots[0].value * 17 + nectarines[0].value * 14
			document.getElementById('somme').innerHTML = 'Somme : ' + total + ' €';
		};
		
		<!--var click_calculer = document.getElementById('calculer');-->
		var click_cerises = document.getElementById('cerises');
		var click_abricots = document.getElementById('abricots_hargrand_extra');
		var click_nectarines = document.getElementById('nect_jaunes_carene_extra');
		
		<!--click_calculer.addEventListener('click', calculer_la_somme, false);-->
		click_cerises.addEventListener('click', calculer_la_somme, false);
		click_cerises.addEventListener('keyup', calculer_la_somme, false);
		click_abricots.addEventListener('click', calculer_la_somme, false);
		click_abricots.addEventListener('keyup', calculer_la_somme, false);
		click_nectarines.addEventListener('click', calculer_la_somme, false);
		click_nectarines.addEventListener('keyup', calculer_la_somme, false);
	</script>

Vois-tu comment je pourrais adapter ce code pour le mettre dans un composant « balise HTML » ? Quelle est la syntaxe pour récupérer les champs numériques dans un Framaforms ?

Peut-être que je devrais d’abord essayer de mettre un code javascript très basique dans composant « balise HTML » simplement pour voir si le javascript est « lu » par Framaforms. Y a-t-il une sorte de Hello World en javascript que je pourrais mettre ?

Il va te falloir utiliser la console de développement du navigateur pour fouiller le document et vérifier que tu peux identifier à coup sûr les composants qui t’intéressent.
Ensuite, « hello world » en javascript peut se faire par un simple
<script> alert("coucou")</script>

J’ai tenté <script> alert("coucou")</script> dans une balise HTML. Je ne pense pas que le javascript soit reconnu car dans le formulaire s’affiche « alert(« coucou ») ».