Javascript : addition de champs input

Bert74 -  
 pakis -
Bonjour,

Voici la situation : j'ai 3 champs input d'un formulaire dans lequel j'envisage de remplir des valeurs numériques. Dans le même formulaire, j'ai un quatrième champ. J'aimerai afficher dans ce quatrième champs la somme numérique des 3 premiers champs.

Voici mon code :

<script language="javascript" type="text/javascript">
function send() {
document.form1.total.value = parseInt(document.form1.valeur_1.value) + parseInt(document.form1.valeur_2.value) + parseInt(document.form1.valeur_3.value);
}
</script>

<form id="form1" name="form1" method="post" action="">
valeur 1 :
<input type="text" name="valeur_1" id="valeur_1" onchange="send()"/>
<br /><br />
valeur 2 :
<input type="text" name="valeur_2" id="valeur_2" onchange="send()"/>
<br /><br />
valeur 3 :
<input type="text" name="valeur_3" id="valeur_3" onchange="send()"/>
<br /><br />
TOTAL :
<input type="text" name="total" id="total" />
<br />
</form>

Cela fonctionne quand les 3 premiers champs sont remplis mais lorsque 1 ou 2 champs sur 3 sont remplis, j'obtiens "NaN".
Comment faire pour avoir dans le champ total, la somme à partir de 1 champ rempli (en considérant qu'un champ non rempli=0) ?

Merci d'avance

1 réponse

  1. Droopy_ Messages postés 252 Statut Membre 25
     
    Peut-être, tu peux essayer un truc comme ça :
    val1 = parseInt(document.form1.valeur_1.value);
    if (val1 == NaN) val1=0;
    val2 = parseInt(document.form1.valeur_2.value);
    if (val2 == NaN) val2=0;
    val3 = parseInt(document.form1.valeur_3.value);
    if (val3 == NaN) val3=0;
    document.form1.total.value = val1 + val2 + val3
    


    C'est pas forcément le plus simple, mais bon...
    0
    1. Arno94
       
      Remplacer => if (val1 == NaN) val1=0;

      Par => if (isNaN(val1) == true ) val1=0;
      0
    2. pakis
       
      salut j'ai un problème dans cette fonction

      function taux()
      {
      var taux=parseFloat (document.getElementByName('taux').value);
      var base=parseInt (document.getElementByName('base').value);
      return base*taux;
      }
      0