IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Calcul d'un total selon les champs du formulaire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut Calcul d'un total selon les champs du formulaire
    Bonjour,

    J'ai un formulaire dans lequel il est nécessaire de faire le total : ce dernier calcule un chiffre après saisie dans le formulaire mais il est erroné ; de plus, je souhaiterais qu'à chaque champ saisi, il mette à jour ce total.
    Pourriez vous m'apporter de l'aide, s'il vous plait ?
    Merci.
    Pierre

    Code ci-joint.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Bonjour,

    Tu as oublié une accolade ouvrante ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (testInt(value5) && testInt(value6))
    qui doit devenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (testInt(value5) && testInt(value6)) 
    {
    Plusieurs remarques constructives :

    - Indente ton code
    - Evite de mélanger du code js dans de l'HTML, colle plutôt ton code js dans une page externe (.js), tu la lie ensuite à ton fichier html comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript" src="TaPage.js"></script>
    </head>
    ta fonction sera disponible avant le chargement de ta page.

    - Tu as un form qui ne pointe pas vers une action

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" name="calcul_cotisations">
    Est-il vraiment nécessaire ce form ?

    Je regarde le reste.

    beegees

    PS: pense à indenter ton code

  3. #3
    Membre averti
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut modification
    Bonjour

    J'ai pris pris en compte tes remarques ; indenter le code signifie d'utiliser l'expression text-indent ; c'est bien cela ; pour le post, c'est normal, je n'ai pas tout à fait fini, il pointera vers un fichier php. J'ai bien mis le code js dans un autre fichier mais j'ai toujours le même problème : mauvais calcul et le total ne se réactualise pas à champ changement de données.

    Merci pour les précisions.
    Pierre

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Salut juste une remarque sur ta fonction testInt qui me semble pas top.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function testInt(value) {
    return value == parseInt(value);
    }
    Pour savoir le type d'un element javascript utilise typeof donc pour faire bien tu devrait juste faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function testInt(value) {
         if(typeof(value) == "numeric"){
              return parseInt(value);
         }else{
              alert("Les valeurs introduites ne sont pas des nombres");
         }
    };
    typeof s'applique sur des variables, objets, functions...
    Pour la suite de ton problème j'ai pas tout saisit, a moins d'être plus explicite sur le problème je saisit pas trop ton programme d'autant plus que tu n'expose pas d'exemple de saisit donc trop vague et pas assez explicite.

    Bonne chance

  5. #5
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par headmax Voir le message
    typeof s'applique sur des variables, objets, functions...
    Mais typeof n'est pas une fonction, c'est un opérateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (typeof machin == truc)
    edit : au temps pour moi, les deux syntaxes sont possibles en fait ^^ (voir MDN)

  6. #6
    Membre averti
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut Pb calcul champ de formulaires
    J'ai inséré les modifications préconisées ; cependant, lors de la saisie du formulaire, il ne me calcule plus rien : le programme dit que les valeurs que j'ai saisies ne sont pas des nombres.

    Pour le problème du champ total des cotisations du formulaire : il devrait par exemple obtenir un montant de 480
    car :
    3 000 * 2/100 = 60
    2 000 * 21/100 = 420

    Merci
    Piere

  7. #7
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par pierre_gomes Voir le message
    indenter le code signifie d'utiliser l'expression text-indent ; c'est bien cela ;
    Non, pas du tout ^^

    Code non indenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Number.prototype.formater = function(decimales, sepDecimal, sepMilliers) {
    var resultat = this.toFixed(decimales);
    if (sepDecimal) resultat = resultat.replace(/\./, sepDecimal);
    if (sepMilliers) {
    var offset = 0;
    var posPoint = resultat.indexOf((sepDecimal)?sepDecimal:".");
    if (posPoint == -1)
    posPoint = resultat.length;
    while ((posPoint - offset) > 3) {
    resultat = resultat.inserer(sepMilliers, (posPoint - offset - 3));
    offset += 3;
    }
    }
    return resultat;
    }
    Code indenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Number.prototype.formater = function(decimales, sepDecimal, sepMilliers) {
       var resultat = this.toFixed(decimales);
       if (sepDecimal) resultat = resultat.replace(/\./, sepDecimal);
       if (sepMilliers) {
          var offset = 0;
          var posPoint = resultat.indexOf((sepDecimal)?sepDecimal:".");
          if (posPoint == -1)
             posPoint = resultat.length;
          while ((posPoint - offset) > 3) {
             resultat = resultat.inserer(sepMilliers, (posPoint - offset - 3));
             offset += 3;
          }
       }
       return resultat;
    }
    Tu préfères lire lequel ?
    ---
    (et pour ceux qui pensent que la lisibilité n'est pas importante... voici la version obfusquée... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Number.prototype.formater=function(fkhtj,fkthj,ftkhj){var ftkhj=this.toFixed(fkhtj);if(fkthj)ftkhj=ftkhj.replace(/\./,fkthj);if(ftkhj){var tfkhj=0;var tfkjh=ftkhj.indexOf((fkthj)?fkthj:".");if(tfkjh==-1)tfkjh=ftkhj.length;while((tfkjh-tfkhj)>3){ftkhj=ftkhj.inserer(ftkhj,(tfkjh-tfkhj-3));tfkhj+=3;}}return ftkhj;}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul de la moyenne sans les champs vides
    Par roidurif dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 20/12/2013, 19h24
  2. Tri de table selon les champs qu'elle possède
    Par alexielle51 dans le forum SQL
    Réponses: 4
    Dernier message: 16/09/2010, 16h31
  3. Réponses: 0
    Dernier message: 30/03/2010, 20h07
  4. Calculer la somme de tous les champs texte
    Par Maroxye dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/06/2008, 14h32
  5. requete concatené selon les champ sont renseignés ou pas
    Par Damish dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/09/2006, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo