Partage
  • Partager sur Facebook
  • Partager sur Twitter

calcul intantané dans input

    6 juillet 2009 à 17:08:27

    reBonjour,

    comment faire un calcul instantané (sommes des nombres dans d'autres input) automatiquement?

    le code suivant ne fonctionne pas:

    <TR>
    <TD><INPUT type="text" name="bois" value="0" onfocus="this.value=''" size="1" style="text-align: center" maxlength="4" onclick="total();" id="bois"></TD>
    <TD><INPUT type="text" name="terre" value="0" onfocus="this.value=''" size="1" style="text-align: center" maxlength="4" onclick="total();" id="terre"></TD>
    <TD><INPUT type="text" name="fer" value="0" onfocus="this.value=''" size="1" style="text-align: center" maxlength="4" onclick="total();" id="fer"></TD>
    <TD><INPUT type="text" name="cereales" value="0" onfocus="this.value=''" size="1" style="text-align: center" maxlength="4" onclick="total();" id="cereales"></TD>
    <TD>TOTAL : <INPUT type="text" name="total" style="text-align: center" size="2"></TD></TR>
    


    <script language="javascript">
    function total() {
    var a = document.travian.bois.value;
    var b = document.travian.terre.value;
    var c = document.travian.fer.value;
    var d = document.travian.cereales.value;
    
    if(a == '') {document.travian.bois.value=0;}
    if(b == '') {document.travian.terre.value=0;}
    if(c == '') {document.travian.fer.value=0;}
    if(d == '') {document.travian.cereales.value=0;}
    
    document.getElementById('total').value = a+b+c+d;
    }
    </script>
    
    • Partager sur Facebook
    • Partager sur Twitter
      6 juillet 2009 à 17:21:15

      Bon, plusieurs choses à redire...

      Tout d'abord, remplace tes onclick() par des onblur(), ainsi le calcul s'effectuera quand on quitte un champ. C'est plus logique non ?

      (Ou alors ajoute total(); dans les onfocus())

      Ensuite, dans ton JS, tu utilises document.getElementById("total") , mais regarde ton dernier input, il n'a pas d'id !
      Ajoute-lui donc un id="total"

      Enfin, au début de ta fonction, je te conseille de faire un parseInt() sur chaque valeur, afin de convertir la valeur en nombre.
      Comme ceci :

      var a = parseInt(document.travian.bois.value,10);
      // etc.
      


      Et tu modifieras tes conditions en conséquence :

      if(isNaN(a)) {
      // etc.
      


      Si tu as des questions, n'hésite pas ;)
      • Partager sur Facebook
      • Partager sur Twitter
        8 juillet 2009 à 11:30:10

        toi ta une idée avec GreaseMonkey non?
        • Partager sur Facebook
        • Partager sur Twitter
          8 juillet 2009 à 12:17:33

          Ou alors il veut refaire un travian à sa sauce...
          • Partager sur Facebook
          • Partager sur Twitter

          calcul intantané dans input

          × 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