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 :

auto calcul du total de la commande ne fonctionne plus si la quantité est un champ de type select


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut auto calcul du total de la commande ne fonctionne plus si la quantité est un champ de type select
    Bonjour à tous,

    J'ai un formulaire de commande dont le champ quantité au format texte peut être modifié par les clients.

    Pour simplifier le choix de la quantité, je souhaite modifier le type de champ pour passer du format texte au format select.

    Dès lors le script ne calcule plus le total ? quel sont les modifs à faire...
    merci d'avance.

    samuel

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <html>
    <head>
    <title>My Untitled Document</title>
    <script type="text/javascript" language="javascript">
    <!--
    function calcVals() {
        var form = document.form1;
        var total = document.getElementById("valTotal");
        var currentTotal = total.value.replace('$','');
         // document.pgCartOrder.calculatedTotal.value='0';
        var tempTotal = 0;
        var totalFields = eval(form.elements.length-1);
        //alert (totalFields);
          for (i=0; i < totalFields; i++) {
            if(form.elements[i].type == 'submit'){
            }else if(form.elements[i].type == 'text'){
                if(form.elements[i].value > 0){  
    				tempTotal = tempTotal + parseFloat(form.elements[i].title * parseInt(form.elements[i].value));
                }else if(form.elements[i].value = 'NaN'){
    				form.elements[i].value = "";
    			}
            }
          }
     
        if (String(total) != 'NaN') {
            form.valTotal.value = "$"+ tempTotal;
        } else {
            form.valTotal.value = 'ERROR';
        }
    }
    form.valTotal.value = round(form.valTotal.value, 2);
    -->
    </script>
     
     
    </head>
     
    <body onload="calcVals()">
     <? if ($_POST['send']){ ?>
    	<? echo floor($_POST['textfield']) ;?>
    	<? echo "<br>";?>
    	<? echo floor($_POST['textfield1']) ;?>
    	<? echo "<br>";?>
    	<? echo floor($_POST['textfield2']) ;?>
    	<? echo "<br>";?>
     
    <? } ?>
     
    <form id="form1" name="form1" method="post" action="" >
      $ 9.25<input type="text" name="textfield" value="1"  title="9.25" onkeyup="calcVals();"/><br/>
      $12.25<input type="text" name="textfield1"  title="12.25" onkeyup="calcVals();"/><br/>
      $ 5.00<input type="text" name="textfield2"  title="-5.00" onkeyup="calcVals();"/><br/>
      <input type="text" readonly="" name="valTotal" id="valTotal" value="$0"/>
      <input type="submit" name="send" value="SEND" />
    </form>
    </body>
    </html>

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

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par jennys Voir le message
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var totalFields = eval(form.elements.length-1);
    encore un ? ça fait deux fois en une semaine...

    >>> pourquoi faire eval sur une donnée numérique ?

    Sinon à part ça : si ton champ à remplacer par un select est "valTotal" (ce que je suppose que tu ne précisais pas ^^), il faut accéder à la value différemment :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //var currentTotal = total.value;
    var currentTotal = total[total.selectedIndex].value;

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var currentTotal = total.value;
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Résolu, merci à tous

    ci-dessous le code pour ceux qui cherche quelque chose d'identique

    Samuel

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <html>
    <head>
    <title>My Untitled Document</title>
     
    <script type="text/javascript">
     
    			function calcVals()
    			{
    				var
    					selects = document.getElementById('form1').getElementsByTagName('select'),
    					total   = 0,
    					i;
     
    				for (i = 0; i < selects.length; i++) {
    					total += (isNaN(selects[i].value) ? 0 : Number(selects[i].value)) * (isNaN(selects[i].title) ? 0 : Number(selects[i].title));
    				}
    				document.getElementById('valTotal').value = '€ ' + total.toFixed(2);
    			}
     
    		</script>
     
     
    </head>
     
    <body onLoad="calcVals()">
     <? if ($_POST['send']){ ?>
    	<? echo floor($_POST['textfield']) ;?>
    	<? echo "<br>";?>
    	<? echo floor($_POST['textfield1']) ;?>
    	<? echo "<br>";?>
    	<? echo floor($_POST['textfield2']) ;?>
    	<? echo "<br>";?>
     
    <? } ?>
    updated
    <form id="form1" name="form1" method="post" action="" >
      $ 9.25
      <select name="textfield" title="9.25" onChange="calcVals(this.form.form1)">
      	<option value="1" selected="selected">1</option>
    	<option value="2">2</option>
      </select>
      <br />
       $ 12.25
      <select name="textfield1" title="12.25" onChange="calcVals(this.form.form1)">
      	<option value="0" selected="selected">As gift</option>
    	<option value="1">1</option>
    	<option value="2">2</option>
      </select>
      <br />
       $ -5.00
      <select name="textfield2" title="-5.00" onChange="calcVals(this.form.form1)">
      	<option value="0" selected="selected">No</option>
    	<option value="1">Yes</option>
      </select>
      <br />
      <input type="text" readonly="" name="valTotal" id="valTotal" value="$0"/>
      <input type="submit" name="send" value="SEND" />
    </form>
    </body>
    </html>

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

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Heu...

    Ca n'empeche vraisemblablement pas l'ensemble de fonctionner, mais tu envoies à ta fonction calcVals un paramètre (inutilisé d'ailleurs) qui n'a aucun sens ^^

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/04/2014, 10h43
  2. Calcul du total d'une commande
    Par grishka dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h03
  3. Calcul du total des commandes effecutées par client
    Par romain404 dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/09/2009, 14h54
  4. Calculer le total d'une commande avec QRexpr
    Par kroma23 dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/05/2008, 23h26
  5. [rave report] Calculer un total
    Par webbulls dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2004, 16h53

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