Probleme sur formulaire

Résolu/Fermé
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007 - 16 oct. 2007 à 16:02
 Orkaell - 1 nov. 2007 à 22:48
Bonjour,
J'ai un petit problème sur mon formulaire au niveau des calculs, comment faire pour que si le total de mon formulaire et inferieur a 60 on rajoute 5 au total
mais si le resultat est supérieur a 60 on garde le total de départ.

Je mets ce bout de code car le code intégral est très long.
 
function total_com()
{

tot = 0;

if (document.acheter2.totsaut.value != "") {
tot = tot + parseInt(document.acheter2.totsaut.value);
 }
 else
 { tot = tot;}
 tot= tot + acompte();
document.acheter2.acompte.value = 30*document.acheter2.nbsaut.value + acompte();
document.acheter2.solde.value = tot-30*document.acheter2.nbsaut.value-acompte();
return tot;
}

Si quelqu'un pouvait m'aider ça serait vraiment cool :)
Je vous remercie par avance :)

66 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
16 oct. 2007 à 21:02
je crois que j'm'ai trompé !
je n'ai jamais utilisé cette fonction...
function total(val)
{
	if ((typeof val) == 'number')
	{
		if (val < 60)
		{
			return val + 5;
		}
		return val;
		}
	return 0;
	}
} 
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
16 oct. 2007 à 21:05
et pour forcer la valeur de retour en type Double ça doit être 'parseDouble()'.
function total(val)
{
if ((typeof val) == 'number')
{
if (val < 60)
{
ret = val + 5;
}
ret = val;
}
ret = 0;
}
return parseDouble(ret);
}
0
ilan27 Messages postés 394 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 15 juin 2009 36
16 oct. 2007 à 21:38
Essaye comme ceci: (et les autres fonctions sont de quel ordre? tu es sûre qu'elles tournent bien?)

function total(val)
{
if (val < 60.0)
{
return parseDouble(val + 5.0);
}
else
{
return parseDouble(val);
}
}

function total_com()
{
tot = 0.0;
if (document.acheter2.totsaut.value != "") {
tot = tot + parseInt(document.acheter2.totsaut.value);
}
else
{ tot = tot;}
tot= total(tot) + acompte();
document.acheter2.acompte.value = 30*document.acheter2.nbsaut.value + acompte();
document.acheter2.solde.value = tot-30*document.acheter2.nbsaut.value-acompte();
return tot;
}
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
16 oct. 2007 à 23:34
Bouhh ça ne marche tjs pas... :-(
quand je mets ces codes les totaux ne s'affichent plus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
17 oct. 2007 à 10:01
salut,

en fait 'parseDouble()' n'est pas une fonction JS, il faut utiliser 'parseFloat()'.
voici une version qui fonctionne, j'ai adapté un peu.
et voila le Javascript.

par contre tu ne testes pas la valeur d'entrée donc si tu saisies des lettres à la place de la valeur : ça plante !
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 10:08
je viens de tester ta proposition dalida et les résultats ne s'affichent plus ! :-(
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
17 oct. 2007 à 10:21
oui désolé je faisais des modifs et j'ai mis en ligne une version qui ne fonctionnait pas !
tu peux essayer à nouveau, c'est corrigé !
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 10:58
J'ai essayé tjs pareil les totaux ne s'affichent plus ! :-(

Je commence a desespérer....
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
17 oct. 2007 à 11:22
vide le cahe de ton navigateur.
il y a une 'alert' (boite de dialogue) qui s'affiche.
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 11:32
Les résultats s'affichent dans IE mais pas dans FF mais le pb des centimes n'est tjs pas réglé
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
17 oct. 2007 à 11:41
tu parles de mon exemple ?
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 11:53
non qd j'integre ton dernier code proposé dans mon formulaire
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
17 oct. 2007 à 12:03
il faut adapter !!!
je ne sais pas comment tu as organisé ton code !
il faut que tu remplaces 'parseInt' par 'parseDouble' et pour attribuer des valeurs il faut utiliser 'document.getElementById()'.
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 12:18
J'ai fait ça :
function total(val)
{
	if (val < 60.0)
	{
		return parseFloat(val + 5.0);
	}
	else
	{
		return parseFloat(val);
	}
}

function total_com()
{
	tot = 0.0;
	if (document.getElementById('totsaut').value != "") {
		tot = tot + parseFloat(document.getElementById('totsaut').value);
	}
	else
	{
		tot = tot;
	}
	tot= total(tot) + acompte();
	document.getElementById('acompte').value = 30*document.getElementById('nbsaut').value + acompte();
	document.getElementById('solde').value = tot-30*document.getElementById('nbsaut').value - acompte();

	return tot
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
17 oct. 2007 à 12:24
et 'acompte()' retourne quoi ?
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 12:27
J'ai ça apres le code donné audessus

function acompte()
{
	return 10;
}
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
17 oct. 2007 à 12:30
mais dans ton code à toi il y avait bien une fonction 'acompte()' ???!!!

j'ai ajouté ça car il n'y avait rien dans ton code !!!

dis moi exactement ce que tu as comme '<input>' dans ton formulaire, ce que tu attends comme valeurs saisies et les calculs qu'il faut effectuer.

0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 16:48
Il y a plein de input et plein de valeur a récupérer...
Je peux peut etre t'envoyer le fichier complet par mail , ça serait plus simple non ?
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 17:15
J'ai ça en code
 <p align="right">Total de ma commande :  </p>
</td>
<td width="80" bgcolor="#FAFAFA" height="36" valign="middle">
<p align="right"><input type="text" name="total" readonly="true" size="6" onfocus="total_com()">€</p></td></tr>
 </table>

<table width="100%" cellpadding="0" cellspacing="0" height="32" style="border-width:1; border-color:white; border-style:dotted;">
 <tr> <td width="88%" bgcolor="#FAFAFA" height="37" valign="middle">
<p align="right">Acompte et frais versés à la commande :  </p></td>
<td width="80" bgcolor="#FAFAFA" height="37" valign="middle">
<p align="right"><input type="text" name="acompte" readonly="true" size="6" value="30">€</p>
0
Orkaell Messages postés 28 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 19 octobre 2007
17 oct. 2007 à 17:21
J'ai ça que j'ai abrégé car c'est assez long
function acompte() {
valac=0;
	if (document.acheter2.totcarteA.value != "") {
valac =  valac + parseInt(document.acheter2.totcarteA.value);
}
else 
{ valac = valac; }
if (document.acheter2.totcarteB.value != ""){
valac=  valac + parseInt(document.acheter2.totcarteB.value);
}
else
{ valac =valac;}
return valac;	
}
0