Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2011, 23h16   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 2
Points : 0
Points : 0
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 :
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>
jennys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 09h15   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
Citation:
Envoyé par jennys Voir le message
Code javascript :
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 :
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

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 09h18   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
var currentTotal = total.value;
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 09h28   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 2
Points : 0
Points : 0
Résolu, merci à tous

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

Samuel

Code :
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>
jennys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 10h25   #5
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
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

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web