Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JS] probleme avec 2 fonctions

elles ne fonctionnent pas

Sujet résolu
    4 février 2006 à 22:08:05

    Salut, pour un formulaire, j'ai 3 fonctions JS, dont 2 qui ne fonctionnent pas (la 3eme n'est pas de moi c'est surement pour ça :p )
    Alors en fait il y a 5 champs où je demande un nombre entre 0 et 100, et ce que je veux faire, d'abord c'est: faire en sorte que quand l'utilisateur entre une lettre, elle s"efface automatiquement (ça ça marche), mais après je veux faire en sorte que quand on entre un nombre dans un champ, automatiquement il y ai un calcul qui se fasse et qui renvoie le nombre restant (ex: au début on a 300pts qu'on doit répartir dans les différents champs, et je veux faire en sorte que quand on entre un nombre ça nous renvoie le nombre restant: si je tappe 10, ça devrait me renvoyer 290pts restants). Enfin ma dernière fonction c'est: que lorsque l'utilisateur entre un nombre supérieur à 100, un message d'erreur s'affiche à l'écran (et là non plus ça ne marche pas :(

    Voici mon code:
    Fonctions en JS:
    <script language="Javascript">
    <!--
    function trait_max() /*fonction qui renvoit le nombre restant*/
    {
            var total = document.getElementById("b1") + document.getElementById("b2") + document.getElementById("b3")
            + document.getElementById("b4") + document.getElementById("b5");
            var erreur = document.getElementById("erreur");
            var points = 300 - total;
           
            if(points >= 0)
            {
            erreur.style.display = 'none';
            }
            else
            {
            erreur.style.display = 'block';
            points = 0;
            }
           
            document.getElementById("total").firstChild.nodeValue = points;
           
    }
    -->
    </script>       

    <script language="Javascript">
    <!--
    function trop(champ, id) /*Fonction qui envoie le message d'erreur quand on tappe un nombe supérieur à 100*/
    {
            var trop = document.getElementById(champ);
            var message = document.getElementById(id);
           
            if(trop>100)
            {
                    message.style.display = 'block';
            }
            else
            {
                    message.style.display = 'none';
            }
           
    }
    -->
    </script>


    Code xHTML:
    <p>Vous avez <strong>300</strong> points à répartir dans les différents traits de caractère.<br/>
            Vous pouvez mettre au maximum <strong>100</strong> points par trait de caractère.</p>
           
            <P>Il vous reste <strong id="total">300</strong> points.</p>
                                                                                   
           
            <p><label>Commandement: <input onKeyUp="javascript:trop(this, 'c1');trait_max();verif_nombre(this);" id="b1" type="text" name="commandement"
            size="3" maxlength="3" value="0" />

            <span id="c1" style="display:none"><strong>Vous ne pouvez pas entrer un nombre supérieur à 100!</strong></span></label><br/>
           
            <label>Influence: <input onKeyUp="javascript:trop(this, 'c2');trait_max();verif_nombre(this);" id="b2" type="text" name="influence"
            size="3" maxlength="3" value="0" />

            <span id="c1" style="display:none"><strong>Vous ne pouvez pas entrer un nombre supérieur à 100!</strong></span></label><br/>
           
            <label>Intelligence: <input onKeyUp="javascript:trop(this, 'c3');trait_max();verif_nombre(this);" id="b3" type="text" name="intelligence"
            size="3" maxlength="3" value="0" />

            <span id="c1" style="display:none"><strong>Vous ne pouvez pas entrer un nombre supérieur à 100!</strong></span></label><br/>
           
            <label>Gestion: <input onKeyUp="javascript:trop(this, 'c4');trait_max();verif_nombre(this);" id="b4" type="text" name="gestion"
            size="3" maxlength="3" value="0"/>

            <span id="c1" style="display:none"><strong>Vous ne pouvez pas entrer un nombre supérieur à 100!</strong></span></label><br/>
           
            <label>Mentalité: <input onKeyUp="javascript:trop(this, 'c5');trait_max();verif_nombre(this);" id="b5" type="text" name="mentalite"
            size="3" maxlength="3" value="0" />

            <span id="c1" style="display:none"><strong>Vous ne pouvez pas entrer un nombre supérieur à 100!</strong></span></label></p>
                                                                           
                                                                           
                    <p><strong id="erreur" style="display:none">Vous avez dépassé le nombre de points de caractère disponible!</strong></p>
    • Partager sur Facebook
    • Partager sur Twitter
      5 février 2006 à 10:10:14

      Quelqu'un peut m'aider s'il vous plait?

      Merci d'avance
      • Partager sur Facebook
      • Partager sur Twitter
        5 février 2006 à 10:32:46

        Citation : The BasheR

        var total = document.getElementById("b1") + document.getElementById("b2") + document.getElementById("b3")
                + document.getElementById("b4") + document.getElementById("b5");

        Doit être remplacé par :
        var total = document.getElementById("b1").value + document.getElementById("b2").value + document.getElementById("b3").value
                + document.getElementById("b4").value + document.getElementById("b5").value;

        En effet : ce qui t'intéresse, ce n'est pas l'élément "input", mais la valeur qu'il a "input.value".
        Je pense qu'il en est de même pour ta deuxième erreur !
        • Partager sur Facebook
        • Partager sur Twitter
          5 février 2006 à 10:44:02

          en remplaçant par ça ça ne marche toujours pas, et cette fois aucune de mes fonctions ne fonctionne, même pas celle qui n'est pas de moi
          • Partager sur Facebook
          • Partager sur Twitter
            5 février 2006 à 11:48:38

            Je crois avoir trouvé : la valeur "input.value" est une chaine de carractères, non un nombre. Il faut donc utiliser parseInt(input.value) pour les transformer en nombre.
            var total = parseInt(document.getElementById("b1").value) + parseInt(document.getElementById("b2").value) + parseInt(document.getElementById("b3").value) + parseInt(document.getElementById("b4").value) + parseInt(document.getElementById("b5").value);


            Et essaie de changer onKeyUp par onChange. C'est plus approprié !
            • Partager sur Facebook
            • Partager sur Twitter
              5 février 2006 à 21:09:45

              Merci la fonction qui renvoie le nombre restant fonctionne très bien, mais la fonction qui affiche un message d'erreur quand le nombre est supérieur à 100 ne marche pas.
              Pouvez vous m'aider?

              Merci d'avance
              • Partager sur Facebook
              • Partager sur Twitter
                6 février 2006 à 9:29:48

                Est-ce que vous pouvez m'aider pour la fonction qui affiche une erreur si on entre un nombre plus grand que 100?

                Merci d'avance
                • Partager sur Facebook
                • Partager sur Twitter
                  6 février 2006 à 19:23:27

                  Je crois avoir la solution :
                  Remplace

                  Citation : The BasheR

                  var trop = document.getElementById(champ);

                  Par
                  var trop = parseInt(champ.value);


                  Explications :
                  l'objet champ (qui correspond à this) pointe vers la balise qui a appelé la fonction. Donc sa valeur est champ.value et on va mettre parseInt(champ.value) pour avoir un nombre. J'espère que ça va marcher !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 février 2006 à 19:55:03

                    Merci de ton aide ça marche très bien maintenant!!
                    Encore merci
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [JS] probleme avec 2 fonctions

                    × 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