Calcul dans un formulaire

cs_dekec Messages postés 12 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 5 mai 2008 - 5 mai 2008 à 16:35
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 21 mars 2009 à 15:10
j'ai un formulaire dans lequel j'ai les champs quantité, prix unitaire
et total. je souhaite par exemple si je renseigne le champ quantité et
prix unitaire, le champ total affiche automatiquement le resultat du calcul
sans valider le formulaire;
je n'ai jamais utiliser javascript

16 réponses

dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
5 mai 2008 à 17:06
Comment est construit ton formulaire?
C'est des trucs genre

Il suffit de mettre une action javascript sur le champ qte ou prixUnitaire du style onFocus (gain du focus) ou onBlur (perte du focus).
Ca parait bourrin, ça l'est surement mais bon moi je ferais comme ça :

Et il te faut écrire une fonction javascript avec une gueule comme ça :

function verifPrix() {
var quantite = document.getElementById("qte").value;
var prixUnitaire = document.getElementById("prixUnitaire").value;

if( quantite != "" &&
prixUnitaire != "") {
document.getElementById("prixTotal").value = quantite * prixUnitaire;
}
}

Voilà ce que je peux te dire. A voir, si quelqu'un a mieux...

<hr size="2" width="100%" />C'est après des heures de codage que j'ai compris pourquoi les mecs de Java ont choisi une tasse de café comme logo!
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
5 mai 2008 à 17:17
Salut,

ici tu es sur un forum java donc dsl mais RAF des questions javascript...

merci de poser tes question javascript sur le site http://www.javascriptfr.com/ et non http://www.javafr.com/

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 mai 2008 à 11:22
Bonjour,
    ben... la question n'était pas dèjà posée ? ici non ?
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
houba222 Messages postés 6 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 21 mars 2009
20 mars 2009 à 11:36
Bonjour,
Je débute... je suis en train de faire le même type de formulaire, ça marche impeccable.
Maintenant je m'attaque aux totaux, j'ai mis des onchange pour appeler la fonction ? est-ce bon ? en tout cas ça ne marche pas.....Quelqu'un peut m'aider ? Merci

<script type="text/javascript">
function calculTotalA()
{
    var QuantiteA = document.getElementById("QuantiteA").value;
    var PrixA = document.getElementById("PrixA").value;
    if( QuantiteA != "" && PrixA != "")
    {
    document.getElementById("TotalA").value = QuantiteA * PrixA;
    }
}
function calculTotalB()
{
    var QuantiteB = document.getElementById("QuantiteB").value;
    var PrixB = document.getElementById("PrixB").value;
    if( QuantiteB != "" && PrixB != "")
    {
    document.getElementById("TotalB").value = QuantiteB * PrixB;
    }
}
function calculTotalC()
{
    var QuantiteC = document.getElementById("QuantiteC").value;
    var PrixC = document.getElementById("PrixC").value;
    if( QuantiteC != "" && PrixC != "")
    {
    document.getElementById("TotalC").value = QuantiteC * PrixC;
    }
}
function calculMontant()
{
    var TotalA = document.getElementById("TotalA").value;
    var TotalB = document.getElementById("TotalB").value;
    var TotalC = document.getElementById("TotalC").value;
    document.getElementById("Montant").value = TotalA + TotalB + TotalC;
    var Montant = document.getElementById("Montant").value;
    document.getElementById("TVA").value = Montant * 1.196;
    var TVA = document.getElementById("TVA").value;
    document.getElementById("HT").value = Montant - TVA;
}   
</script>
<form id="form_commande" method="post" action="">
  <fieldset>
   
      <legend>Commande</legend>
   

          ----

        Désignation,
        Quantité,
        PU,
        Total,
     
      ----

        Article A,
        ,
        10,00 €
          ,
        ,
     
      ----

        Article B,
        ,
        20,00 €
          ,
        ,
     
      ----

        Article C,
        ,
        30,00 €
          ,
        ,
     
      ----

        &nbsp;,
        &nbsp;,
        Total Montant,
       
         
        ,
     
      ----

        &nbsp;,
        &nbsp;,
        Dont TVA 19,6%,
        ,
     
      ----

        &nbsp;,
        &nbsp;,
        Total HT,
        ,
     
   

  </fieldset>
 
    <label>
     
    </label>
     

</form>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
20 mars 2009 à 12:07
Bonjour,

t'as remarqué que ça datait de quasi 1 an ?
t'as du bol que je reçoive une alerte !
mais nous serons peu à te lire !
uniquement ceux qui sont intervenu

>>est-ce bon ? en tout cas ça ne marche pas
si ça ne marche pas, ce n'est donc pas bon ! si ?
et qu'est-ce qui ne marche pas ?
si c'est le onchange... c'est parce que tu ne saisis rien dans le champ
appelle le calcul du total lors des calculs des lignes

ET : tu aurais pu ne mettre qu'une seul fonction plutôt que 3 !
  suppose que tu ais 250 articles !

Cordialement [mon Site] [M'écrire] Bul
0
houba222 Messages postés 6 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 21 mars 2009
20 mars 2009 à 13:06
Et non j'avais pas vu la date......
Alors merci pour ta réponse !!

Effectivement, j'ai réussi à tout mettre sur la même fonction, je ne sais pas si ce que j'ai fait est très orthodoxe, mais ça marche !
Seul souci, il me concatène mon addition Montant, pourtant ce sont des variables, pourquoi il les considère comme des chaînes ?

function calculTotal()
{
    var QuantiteA = document.getElementById("QuantiteA").value;
    var PrixA = document.getElementById("PrixA").value;
    if( QuantiteA != "" && PrixA != "")
    {
    document.getElementById("TotalA").value = QuantiteA * PrixA;
    }
    var QuantiteB = document.getElementById("QuantiteB").value;
    var PrixB = document.getElementById("PrixB").value;
    if( QuantiteB != "" && PrixB != "")
    {
    document.getElementById("TotalB").value = QuantiteB * PrixB;
    }
    var QuantiteC = document.getElementById("QuantiteC").value;
    var PrixC = document.getElementById("PrixC").value;
    if( QuantiteC != "" && PrixC != "")
    {
    document.getElementById("TotalC").value = QuantiteC * PrixC;
    }
    var TotalA = document.getElementById("TotalA").value;
    var TotalB = document.getElementById("TotalB").value;
    var TotalC = document.getElementById("TotalC").value;
    document.getElementById("Montant").value = TotalA+TotalB+TotalC;
    var Montant = document.getElementById("Montant").value;
    document.getElementById("TVA").value = Montant*1.196;
    var TVA = document.getElementById("TVA").value;
    document.getElementById("HT").value = Montant-TVA;
}   
</script>
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
20 mars 2009 à 13:13
si tu t'adresses à un champ html, c'est une chaîne
regarde du coté de Number, parseInt
c'est l' inconvénient ( il y a des avantages !!!!! )  des langages où l'on
ne décrit pas le type des variables.

ch'tiote remarque :
et si tu saisis "abcdefgh" comme quantité ?
0
houba222 Messages postés 6 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 21 mars 2009
20 mars 2009 à 14:01
Ah OK !
et oui si je mets abc = NaN

J'ai essayé avec parseInt :    document.getElementById("Montant").value = parseInt(TotalA)+parseInt(TotalB)+parseInt(TotalC);
Donc je n'ai plus de concatenation mais bien une somme !
En revanche, le calcul s'effectue bizarrement : je saisis la qté d'1 article, le total article est caculé, le montant NaN, je saisi la qté d'1 2ème article, le total article est calculé, le montant NaN, et c'est une fois le 3ème article saisi que le montant est calculé !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
20 mars 2009 à 14:11
1° regarde bien parseInt, il y a 2 paramètres
tu peux  utiliser Number
>>je saisis la qté d'1 article...pas faites dans les 3 champs,
ben oui.
je me cite : et si tu saisis "abcdefgh" comme quantité ?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
20 mars 2009 à 14:17
ch'tiote remarque encore....
avec parseInt et 1 seul paramètre saisis donc 098 par exemple
tu vas voir... c'est rigolo
0
houba222 Messages postés 6 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 21 mars 2009
20 mars 2009 à 15:20
J'ai rajouté le 2ème paramètre de parseInt, soit la "base" des nombres, soit :
document.getElementById("Montant").value = parseInt(TotalA,10)+parseInt(TotalB,10)+parseInt(TotalC,10);

Mais sans et avec, j'ai le même problème.
Avec 098, j'ai pas vu de différence ? C'était quoi le côté rigolo ?

Comme je l'ai dit, je suis en "bleue" en javascript !!
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
20 mars 2009 à 15:37
essaye donc :
    alert(parseInt("0986"));
et alert(parseInt(""));

>>j'ai le même problème.
normal ça doit être du numérique et "" ça ne l'est pas
Number ça devrait aller
0
houba222 Messages postés 6 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 21 mars 2009
20 mars 2009 à 20:27
Euh là moi pas comprendre ce que tu veux que je fasse des lignes alert, je les mets où et pour quoi faire ?

Sinon, j'avais essayé aussi avec number, ça faisait rien pour cause j'avais écris number au lieu de Number !
Et là miracle : ça marche !!!
Merci pour tout Bul3
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
21 mars 2009 à 09:11
mes alert c'était pour l'exemple
je te disais essaye ! et tu verras
( met <script>  alert...</script> rien de plus dans une page et teste ! )

nickel si ça baigne
0
houba222 Messages postés 6 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 21 mars 2009
21 mars 2009 à 14:53
Bonjour Bul3
Le 1er donne 0 et le 2ème NaN ! Voilà !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
21 mars 2009 à 15:10
ben oui...

le 2ème pour "expliquer" le NaN

le 1er, tu ne trouves pas ça rigolo ? "0986" ==> 0
et par exemple : alert( parseInt("0694")); donnerait 6 !

l'explication:
pas de 2ème paramètre,  commence par 0 ===>
considéré comme de l' octal
+ parseInt arrête au 1er caractère "non valide"

@+
0
Rejoignez-nous