Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème Formulaire de calcul

Sujet résolu
    10 avril 2009 à 14:09:01

    Bonjour la communauté,

    Alors je reviens vers vous car j'ai changé mon code de calcul de bon de commande.

    function calculTotalA()
    {
        var QuantiteA = document.getElementById("QuantiteA").value;
        var PrixA = document.getElementById("PrixA").value;
        if( QuantiteA != "" && PrixA != "")
        {
        document.getElementById("TotalA").value = parseFloat(QuantiteA, 10) * parseFloat(PrixA, 10);
        }
    }
    function calculTotalB()
    {
        var QuantiteB = document.getElementById("QuantiteB").value;
        var PrixB = document.getElementById("PrixB").value;
        if( QuantiteB != "" && PrixB != "")
        {
        document.getElementById("TotalB").value = parseFloat(QuantiteB, 10) * parseFloat(PrixB, 10);
        }
    }
    function calculTotalC()
    {
        var QuantiteC = document.getElementById("QuantiteC").value;
        var PrixC = document.getElementById("PrixC").value;
        if( QuantiteC != "" && PrixC != "")
        {
        document.getElementById("TotalC").value = parseFloat(QuantiteC, 10) * parseFloat(PrixC, 10);
        }
    }
    function calculMontant()
    {
        var TotalA = document.getElementById("TotalA").value;
        var TotalB = document.getElementById("TotalB").value;
        var TotalC = document.getElementById("TotalC").value;
        document.getElementById("montant").value = parseInt(TotalA, 10) + parseInt(TotalB, 10) + parseInt(TotalC, 10);
        var Montant = document.getElementById("montant").value;
        document.getElementById("TVA").value = parseFloat(montant, 10) * 1.196;
        var TVA = document.getElementById("TVA").value;
        document.getElementById("HT").value = montant - TVA;
    }   
    </script>
    



    Et le code html qui suit avec :

    <form id="form_commande" method="post" action="">
      <fieldset>
        <h3>
          <legend>Commande</legend>
        </h3>
        <table>
          <tr>
            <td>Désignation</td>
            <td>Quantité</td>
            <td>PU</td>
            <td>Total</td>
          </tr>
          <tr>
            <td>Article A</td>
            <td><input type="text" name="QuantiteA" id="QuantiteA" onChange="calculTotalA()" /></td>
            <td>
              <input type="text" name="PrixA" id="PrixA" type="hidden" value="10" /></td>
            <td><input name="TotalA" type="text" id="TotalA" onchange="calculMontant()" /></td>
          </tr>
          <tr>
            <td>Article B</td>
            <td><input type="text" name="QuantiteB" id="QuantiteB" onChange="calculTotalB()" /></td>
            <td>
              <input type="text" name="PrixB" id="PrixB" type="hidden" value="20" /></td>
            <td><input type="text" name="TotalB" id="TotalB" onchange="calculMontant()" /></td>
          </tr>
          <tr>
            <td>Article C</td>
            <td><input type="text" name="QuantiteC" id="QuantiteC" onChange="calculTotalC()" /></td>
            <td>
              <input type="text" name="PrixC" id="PrixC" type="hidden" value="30" /></td>
            <td><input type="text" name="TotalC" id="TotalC" onchange="calculMontant()" /></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td><strong>Total Montant</strong></td>
            <td><strong>
              <input type="text" name="montant" id="montant" onClick="calculMontant()"/>
            </strong></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>Dont TVA 19,6%</td>
            <td><input type="text" name="TVA" id="TVA" /></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>Total HT</td>
            <td><input type="text" name="HT" id="HT" /></td>
          </tr>
        </table>
      </fieldset>
      <p>
        <label>
          <input type="submit" name="envoyer" id="envoyer" value="Envoyer" />
        </label>
          </p>
    </form>
    


    Alors j'ai plusieurs souci

    1) le calcul ne se fait pas a&utomatiquement, a mon avis j'ai un souci avec les on change, c'est a dire que je veux que le caul du TotalA s'effectue aprés avoir rentré la quantité et le PU.

    2) Le Calcul total ne s'effectue pas.

    3) LE calcul de TVA non plus.

    Et je pense que je peux optimiser tout ça aussi, c'est pourquoi je demande l'aide a la communauté sdz :-°:p

    Ciao Cheg
    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2009 à 14:13:47

      onchange.. ce serait pas plutot onblur?

      Et je ne crois pas que parseFloat prenne deux arguments, donc pas de ", 10"
      • Partager sur Facebook
      • Partager sur Twitter
        10 avril 2009 à 14:21:17

        Peux tu être un petit peu plus clair stp :p
        • Partager sur Facebook
        • Partager sur Twitter
          10 avril 2009 à 14:26:13

          Remplace les codes onchange="..." par onblur="..." et tu peux rajouter après eux des onkeyup="..." pour que les fonctions se lancent à chaque appui sur une touche :
          onchange : quand un select change, ne fonctionne pas sur un champ input
          onblur : quand le focus n'est plus sur le champ (input ou autre)
          onkeyup : quand un appui de touche est relâché.
          • Partager sur Facebook
          • Partager sur Twitter
            10 avril 2009 à 14:27:31

            Alors pour le calcul du Total A B et C, it's good :p
            Par contre le calcul Total des trois et de la TVA ne se fait pas.

            Ciao Cheg

            • Partager sur Facebook
            • Partager sur Twitter
              10 avril 2009 à 14:38:23

              Pourrait-on voir la page online? =o
              Ou c'est du local?
              • Partager sur Facebook
              • Partager sur Twitter
                10 avril 2009 à 14:45:26

                C'est du local, donc je ne peux pas vous la montrer.
                Pour le total c'est ok reste plus que la TVA.
                • Partager sur Facebook
                • Partager sur Twitter
                  10 avril 2009 à 14:48:19

                  var Montant = document.getElementById("montant").value;
                      document.getElementById("TVA").value = parseFloat(montant, 10) * 1.196;
                  


                  Attention les variables sont sensibles a la casse. Donc soit tu utilises Montant, soit montant, pas les deux =o

                  Edit: Je vois que Golmote ecrit, je suis sûr je l'ai grillé ! :D
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 avril 2009 à 14:49:51

                    Citation : Kyle Katarn

                    onchange : quand un select change, ne fonctionne pas sur un champ input



                    J'ai pas testé sous IE, mais sous FF, si si ça fonctionne sur un input text.

                    C'est en fait un onblur qui ne s'active que si la valeur du champ a été modifiée...


                    ^^ Tiller, tu m'as grillé sur la rapidité d'écriture... mais pas sur le contenu... vu que ça n'a rien à voir :p
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 avril 2009 à 14:50:51

                      Pff tricheur ! Moi je l'aide dans la résolution au moins =o
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 avril 2009 à 14:53:24

                        Bah moi non ! ^^ J'ai même pas encore lu son code... Je m'y attèle de suite ! :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 avril 2009 à 14:57:45

                          MErci de votre aide ça marche :p , mais est ce que tu crois que je peux un peu plus optimiser mon code ???

                          Ciao Cheg
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 avril 2009 à 14:58:41

                            Oui tu peux largement xD
                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 avril 2009 à 15:01:52

                              Bon tout compte fait ça ne fonctionne pas totalement....... :(
                              Je m'explique:

                              Si jamais je ne rentre pas une valeur dans chaque input, il ne me calcul pas le total....
                              Hors je voudrai que meme si tous les inputs ne sont pas rempli, le total soit quand meme calculé..
                              Il me met NaN si tous les champs ne sont pas rempli.....
                              • Partager sur Facebook
                              • Partager sur Twitter
                                10 avril 2009 à 15:05:41

                                <body>
                                <form id="form_commande" method="post" action="">
                                  <fieldset>
                                    <h3>
                                      <legend>Commande</legend>
                                    </h3>
                                    <table>
                                      <tr>
                                        <td>Désignation</td>
                                        <td>Quantité</td>
                                        <td>PU</td>
                                        <td>Total</td>
                                      </tr>
                                      <tr>
                                        <td>Article A</td>
                                        <td><input type="text" name="QuantiteA" id="QuantiteA" onchange="calculTotal('A')" onkeyup="calculTotal('A')" value="0" /></td>
                                        <td>
                                          <input type="text" name="PrixA" id="PrixA" type="hidden" value="10" /></td>
                                        <td><input name="TotalA" type="text" id="TotalA" onchange="calculMontant()" value="0" /></td>
                                      </tr>
                                      <tr>
                                        <td>Article B</td>
                                        <td><input type="text" name="QuantiteB" id="QuantiteB" onchange="calculTotal('B')" onkeyup="calculTotal('B')" value="0" /></td>
                                        <td>
                                          <input type="text" name="PrixB" id="PrixB" type="hidden" value="20" /></td>
                                        <td><input type="text" name="TotalB" id="TotalB" onchange="calculMontant()" value="0" /></td>
                                      </tr>
                                      <tr>
                                        <td>Article C</td>
                                        <td><input type="text" name="QuantiteC" id="QuantiteC" onchange="calculTotal('C')" onkeyup="calculTotal('C')" value="0" /></td>
                                        <td>
                                          <input type="text" name="PrixC" id="PrixC" type="hidden" value="30" /></td>
                                        <td><input type="text" name="TotalC" id="TotalC" onchange="calculMontant()" value="0" /></td>
                                      </tr>
                                      <tr>
                                        <td>&nbsp;</td>
                                        <td>&nbsp;</td>
                                        <td><strong>Total Montant</strong></td>
                                        <td><strong>
                                          <input type="text" name="montant" id="montant" onClick="calculMontant()" value="0" />
                                        </strong></td>
                                      </tr>
                                      <tr>
                                        <td>&nbsp;</td>
                                        <td>&nbsp;</td>
                                        <td>Dont TVA 19,6%</td>
                                        <td><input type="text" name="TVA" id="TVA" value="0" /></td>
                                      </tr>
                                      <tr>
                                        <td>&nbsp;</td>
                                        <td>&nbsp;</td>
                                        <td>Total HT</td>
                                        <td><input type="text" name="HT" id="HT" value="0" /></td>
                                      </tr>
                                    </table>
                                  </fieldset>
                                  <p>
                                    <label>
                                      <input type="submit" name="envoyer" id="envoyer" value="Envoyer" />
                                    </label>
                                      </p>
                                </form>
                                
                                <script type="text/javascript">
                                
                                function calculTotal(letter)
                                {
                                    var Quantite = parseFloat(document.getElementById("Quantite" + letter).value);
                                    var Prix = parseFloat(document.getElementById("Prix" + letter).value);
                                    if (Quantite != "" && Prix != "")
                                    {
                                    	document.getElementById("Total" + letter).value = Quantite * Prix;
                                    }
                                    calculMontant();
                                }
                                
                                function calculMontant()
                                {
                                    var TotalA = parseFloat(document.getElementById("TotalA").value);
                                    var TotalB = parseFloat(document.getElementById("TotalB").value);
                                    var TotalC = parseFloat(document.getElementById("TotalC").value);
                                    var Total = TotalA + TotalB + TotalC;
                                    document.getElementById("montant").value = Total;
                                    document.getElementById("TVA").value = Total * 0.196;
                                    document.getElementById("HT").value = Total - Total * 0.196;
                                }   
                                
                                </script>
                                </body>
                                


                                Et la TVA, c'est 0.196 et pas 1.196 =o
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 avril 2009 à 15:06:50

                                  Citation : Tiller

                                  Oui tu peux largement xD



                                  Un petit exemple stp si ce n'est pas trop demandé.
                                  Bon aprés j'ai une autre demande mais je la garde de coté pour le moment, une chose a la fois.... :p
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    10 avril 2009 à 15:14:30

                                    Citation : Tiller

                                    J'étais entrain de le faire l'exemple =o

                                    http://tillersama.hd.free.fr/CCM/aa.htm



                                    Merci mais j'ai fait une petite erreur il ne gfaut pas de value pour le prix, il sera rentré par les utilisateurs du bon de commande dsl :-°
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      10 avril 2009 à 15:18:21

                                      Citation : Tiller

                                      Nieh? Pas compris



                                      En fait les value 10, 20 ,30 pas besoin car le prix sera rentré par l'utilisateur du bon. Mais j'ai vu qu'on pouvait les changer sur ton exemple mais dès ce changement le prix ne se calcule plus automatiquement, il faut de nouveau rentré la quantité mais je pense avoir compris...... :p

                                      Je reviens...
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Problème Formulaire de calcul

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown