Bonjour
J'ai trouvé un script fort sympathique, permettant de faire un petit module de calcul de devis en ligne. Ho... pas de TVA, rien d'officiel. Juste de quoi cocher des cases et des radios pour faire les additions automatiquement.
Pour mes besoins (non pas ça non....) j'essaye de modifier le truc. en effet, le script de base ne prévoir pas de quantités. Hors, j'aimerais bien pouvoir le faire... on coche une case pour ajouter un produit, on indique la quantité et hop, ça calcule tout seul.
je vous copie ci-dessous le code de base... et je veux bien vos idées sur le sujet, je ne sais pas du tout par quel bout attaquer cette histoire de quantité...
par exemple là. ce code permet de calculer automatiquement le total au fur et à mesure que l'on coche ou décoche. ça marche super bien. mais comment, par exemple, permettre à l'utilisateur d'indiquer une quantité pour l'option 2, tout en conservant le mode de fonctionnement actuel ?
merci tout plein pour vos idées !
(on verra plus tard pour les calculs dégressifs avec la quantité)
dans le head :
Code :
- <script type="text/javascript">
- /*
- Kevin Hartig :: http://www.grafikfx.net/
- */
- // Calculate the total for items in the form which are selected.
- function calculateTotal(inputItem) {
- with (inputItem.form) {
- // Process each of the different input types in the form.
- if (inputItem.type == "radio" ) { // Process radio buttons.
- // Subtract the previously selected radio button value from the total.
- calculatedTotal.value = eval(calculatedTotal.value) - eval(previouslySelectedRadioButton.value);
- // Save the current radio selection value.
- previouslySelectedRadioButton.value = eval(inputItem.value);
- // Add the current radio button selection value to the total.
- calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);
- } else { // Process check boxes.
- if (inputItem.checked == false) { // Item was uncheck. Subtract item value from total.
- calculatedTotal.value = eval(calculatedTotal.value) - eval(inputItem.value);
- } else { // Item was checked. Add the item value to the total.
- calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);
- }
- }
- // Total value should never be less than 0.
- if (calculatedTotal.value < 0) {
- InitForm();
- }
- // Return total value.
- return(formatCurrency(calculatedTotal.value));
- }
- }
- // Format a value as currency.
- function formatCurrency(num) {
- num = num.toString().replace(/\$|\,/g,'');
- if(isNaN(num))
- num = "0";
- sign = (num == (num = Math.abs(num)));
- num = Math.floor(num*100+0.50000000001);
- cents = num%100;
- num = Math.floor(num/100).toString();
- if(cents<10)
- cents = "0" + cents;
- for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
- num = num.substring(0,num.length-(4*i+3)) + ',' + num.substring(num.length-(4*i+3));
- return (((sign)?'':'-') + '€' + num + '.' + cents);
- }
- // This function initialzes all the form elements to default values.
- function InitForm() {
- // Reset values on form.
- document.selectionForm.total.value='0 €';
- document.selectionForm.calculatedTotal.value=0;
- document.selectionForm.previouslySelectedRadioButton.value=0;
- // Set all checkboxes and radio buttons on form to unchecked.
- for (i=0; i < document.selectionForm.elements.length; i++) {
- if (document.selectionForm.elements[i].type == 'checkbox' | document.selectionForm.elements[i].type == 'radio') {
- document.selectionForm.elements[i].checked = false;
- }
- }
- }
- </script>
|
le body :
Code :
- <body onload="InitForm();" onreset="InitForm();">
- <p>
- <table><tr><td>
- <form method="POST" name="selectionForm">
- <b>Temps de présence sur place :</b><br>
- <input type="radio" name="duree" value="420.00" onclick="this.form.total.value=calculateTotal(this);"> 10 heures <b>::: 420 € :::</b>
- <br>
- <input type="radio" name="duree" value="650.00" onclick="this.form.total.value=calculateTotal(this);"> 15 heures <b>::: 650 € :::</b>
- <br>
- <br>
- <b>options :</b><br>
- <input type="checkbox" name="option1" value="55.00" onclick="this.form.total.value=calculateTotal(this);"> option 1 <b>::: 55 € :::</b>
- <br>
- <input type="checkbox" name="option2" value="90.00" onclick="this.form.total.value=calculateTotal(this);"> option 2 <b>::: 90 € :::</b>
- <br><br>
- <br>
- <br>
- <input type="hidden" name="calculatedTotal" value="0">
- <input type="hidden" name="previouslySelectedRadioButton" value="0">
- <strong>Le total est :</strong>
- <input type="text" name="total" readonly onfocus="this.blur();"><strong> (indication non contractuelle)</strong>
- </form>
- </td></tr></table>
- </p>
- <hr />
- </body>
|
Message édité par Profil supprimé le 25-04-2008 à 09:23:11