Bonjour
Je suis actuellement en train d'essayer de mettre au point un calculateur de devis avec javascript de la manière suivante : chaque produit a un équipement (et donc un prix) standard auquel peuvent s'ajouter différentes options sélectionnables avec des checkboxes. Le but de mon calculateur c'est de réactualiser le prix total et le nombre d'options sélectionnées à chaque fois qu'on clique sur une checkbox et malheureusement le mien ne prend pas en compte les changements précédents. Par exemple : prix de base = 50 000 euros. Option 1 = 1000 euros, Option 2 = 2000 euros. Si je clique sur l'option 1 le prix est réactualisé à 51 000 euros et si je clique ensuite sur l'option 2 il est réactualisé à 52 000 euros (au lieu des 53 000 euros attendus) et quand au nombre d'options sélectionnées, le programme s'obstine à ne pas les afficher ! Voilà le code :
1- html / PHP
Je ne m'étendrai pas sur le reste du code car il fonctionne, et cette checkbox est reproduite autant de fois que nécessaire par une boucle en fonction du nombre d'options répertoriées dans la base de données. Le problème ici c'est le Javascript. Voici le code de la fonction calcultotal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <input type="checkbox" id="<?php echo ''.$reference.' - '.$i.''; ?>" value="<?php echo "$prix"; ?>" name="<?php echo "$reference"; ?>" onChange="calcultotal('<?php echo ''.$reference.' - '.$i.''; ?>', '<?php echo "$prix_standard"; ?>')" />
Les alert sont loin d'être esthétiques mais c'est juste pour la phase de test. Le résultat final sera affiché dans quelque chose comme cela et qui concluera la fonction, quand le reste marchera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function calcultotal(id, prix_standard) { var option_prix = parseInt(document.getElementById(id).value); var prix_total = parseInt(prix_standard); var nombre_option = 0; if (document.getElementById(id).checked == true) { prix_total = (prix_total + option_prix); nombre_option++; alert (prix_total + nombre_option); } else { prix_total = (prix_total - option_prix); nombre_option--; alert (prix_total + nombre_option); } }
Je remercie par avance tous ceux qui pourraient m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $("#total_ht").replaceWith('<div id="total_ht" ><p>Total HT : ' + prix_total + 'euros</p><p>Options choisies : ' + nombre_options +'</p></div>');![]()
Partager