[Javascript]Up input à partir d'autres inputs

jbulysse01 Messages postés 4 Date d'inscription   Statut Membre -  
Burnog Messages postés 1 Statut Membre -
Bonjour,

J'aimerais faire un update en javascript d'un input quand je change le contenu d'un autre input.
En gros, je veux qu'on puisse saisir des sommes dans des input et afficher le total dans un autre input.

Pour cela, j'ai essayé :

<form name="my_form" action="my_form.php" method='POST'>
<input type="text" name="first_field" value="" onchange='javascript:update("my_form","first_field","second_field");'>
<input type="text" name="second_field" value="">

Code javascript rattaché :
function update(name_form, nom_field, nom_update) {

f = eval("document.forms[\""+name_form+"\"]");

f.elements[nom_update].value = f.elements[nom_field].value+f.elements[nom_update].value;

f.submit();
}
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. PhP Messages postés 1774 Statut Membre 606
     
    bjr

    submit() , eval() hum c'est bien compliqué pour une simple addition

    Essai ceci

    <html>
    <head>
    
    <script language="JavaScript">
    <!--
    function calcul_total()
    {
    	var eltA = document.getElementById("valeurA");
    	var eltB = document.getElementById("valeurB");
    	var eltTotal = document.getElementById("total");
    
    	var valA = parseFloat(eltA.value)
    	if (isNaN(valA)) valA = 0;
    
    	var valB = parseFloat(eltB.value);
    	if (isNaN(valB)) valB = 0;	
    
    	eltTotal.value = valA+valB;	
    }
    
    //-->
    </script>
    </head>
    <body>
    <form action="" method="post">
    Valeur A <input type="text" id="valeurA" name="valeurA" value="0" onKeyDown="calcul_total();"><br />
    Valeur B <input type="text" id="valeurB" name="valeurB" value="1" onKeyDown="calcul_total();"><br />
    Total A+B <input type="text" id="total" name="total" value="" disabled="true">
    </form>
    </body>
    </html>
    --

    PhP  
    Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
    0
    1. Burnog Messages postés 1 Statut Membre
       
      Un grand merci pour ce script terrible que j'ai facilement mis à ma sauce et qui m'a enlevé une belle épine du pied.

      J'avais tellement envie de te remercier que je me suis même inscrit sur CCC :-) !!!

      Bravo et merci encore Php.

      Ci dessous une copie du javascript que j'ai modifié pour moi :




      function sumIt_1()
      {
      var eltA = document.getElementById("quantite_1");
      var eltB = document.getElementById("puht_1");
      var eltC = document.getElementById("remise_1");
      var eltTotal = document.getElementById("totalht_1");

      var valA = parseFloat(eltA.value)
      if (isNaN(valA)) valA = 0;

      var valB = parseFloat(eltB.value);
      if (isNaN(valB)) valB = 0;

      var valC = parseFloat(eltC.value);
      if (isNaN(valC)) valC = 0;

      eltTotal.value = (valA*valB)-((valA*valB)*(valC/100));
      }
      0
  2. jbulysse01 Messages postés 4 Date d'inscription   Statut Membre
     
    Bonjour,

    Merci pour votre réponse, entre-temps, j'avais commencé à décoincer l'affaire mais voici le problème que j'ai :
    au lieu d'ajouter mes valeurs, elles sont concaténées dans l'input dans lequel je souhaite voir figurer le résultat du calcul comme si c'était une chaine:

    <script type="text/javascript">
    function calcul(num,nb)
    {
    if(parseFloat( document.getElementById("a"+nb).value)==("NaN")) {document.getElementById("a"+nb).value=0;}
    document.getElementById("t"+num).value= parseFloat( document.getElementById("t"+num).value + parseFloat( document.getElementById("a"+nb).value));
    }
    </script>

    while (...) {
    $i++;
    <td><input type="text" name="<? echo "a".$i?>" id="<?echo "a".$i?>" onchange='calcul(1,<?echo $i?>);'></td>
    }

    <td><input type="text" name="total_1" id="t1" size="6"></td>
    0
  3. PhP Messages postés 1774 Statut Membre 606
     
    Remplace
    document.getElementById("t"+num).value= parseFloat( document.getElementById("t"+num).value + parseFloat( document.getElementById("a"+nb).value));

    par

    document.getElementById("t"+num).value= parseFloat( document.getElementById("t"+num).value)+ parseFloat( document.getElementById("a"+nb).value);

    subtil les parenthèses mais ca devrait marcher
    0
  4. jbulysse01 Messages postés 4 Date d'inscription   Statut Membre
     
    Merci,

    Mais j'ai toujours un pb, au lieu d'avoir le résultat de la somme qui s'affiche dans l'input j'ai ce cher "NaN", ce qui me paraît fou vu le blindage que j'ai rajouté (clairement, je ne vois pas pourquoi il me sort cette valeur) :
    <script type="text/javascript">
    function calcul(nb)
    {
    if(parseFloat( document.getElementById("a"+nb).value)==("NaN"))
    {document.getElementById("a"+nb).value=0;}

    if(parseFloat( document.getElementById("t1").value)==("NaN"))
    {document.getElementById("t1").value=0;}

    if(parseFloat( document.getElementById("t1").value)==(""))
    {document.getElementById("t1").value=0;}

    document.getElementById("t1").value= parseFloat(parseFloat(document.getElementById("t1").value)+ parseFloat( document.getElementById("a"+nb).value));}
    </script>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PhP Messages postés 1774 Statut Membre 606
     
    ben essai comme j'ai fait

    function calcul(nb)
    {
    var valNb =parseFloat(document.getElementById("a"+nb).value);
    if (isNaN(valNb)) valNb = 0;

    var valT1 =parseFloat(document.getElementById("t1").value);
    if (isNaN(valT1)) valT1 = 0;

    document.getElementById("t1").value= valT1+valNb;
    }
    0
  7. jbulysse01 Messages postés 4 Date d'inscription   Statut Membre
     
    That's fine :)

    Merci, pb résolu!
    0