Javascript /calcul sur donné issu de formulai
Fermé
ABBA
-
14 avril 2004 à 16:56
SirHill Messages postés 4060 Date d'inscription vendredi 19 mars 2004 Statut Contributeur Dernière intervention 19 avril 2020 - 17 avril 2004 à 00:26
SirHill Messages postés 4060 Date d'inscription vendredi 19 mars 2004 Statut Contributeur Dernière intervention 19 avril 2020 - 17 avril 2004 à 00:26
A voir également:
- Javascript /calcul sur donné issu de formulai
- Calcul moyenne excel - Guide
- Telecharger javascript - Télécharger - Langages
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Formule calcul excel somme - Guide
5 réponses
SirHill
Messages postés
4060
Date d'inscription
vendredi 19 mars 2004
Statut
Contributeur
Dernière intervention
19 avril 2020
543
15 avril 2004 à 03:55
15 avril 2004 à 03:55
Salut Abba,
Voici ton code corrigé:
Voici ton code corrigé:
<script language="JavaScript"> <!-- function testform(C1,C2,C3,C4) { if (C1.value == "") (C1.value=0); if (C2.value == "") (C2.value=0); if (C3.value == "") (C3.value=0); if (C4.value == "") (C4.value=0); if ((C1.value) + 2 * (C2.value) + 3 * (C3.value) + 4 * (C4.value) > 9) { alert("Le total est trop élevé"); C1.focus(); return false; } return true; } //--> </script> <form method="POST" action="http://www.monsite.com/pagesuivante.asp" onSubmit="return testform(this.C1,this.C2,this.C3,this.C4)"> <input type="text" name="C1"><br> <input type="text" name="C2"><br> <input type="text" name="C3"><br> <input type="text" name="C4"><br> <input name="bouton" type="submit" value="Valider"> </form>Bon courage et @+
Bonjour SirHill,
Il ya un bug quelquepart dans le code car il me repond "le total est trop élevé dans presque tous les cas (sauf si tout est null ou a zéro ou par exemple égale à 0,1).
Je mets si dessous une copie du code réel qui me pose pb.
Merci encore de votre aide.
<script language="JavaScript">
<!--
function testform(RNbLTG,RNbLTF,RNbL4G,RNbL4F,RNbCs,RNbCd,RNbCt,RNbC4,RNbC5,RNbC6){
if(RNbLTG.value=="") (RNbLTG.value=0);
if(RNbLTF.value=="") (RNbLTF.value=0);
if(RNbL4G.value=="") (RNbL4G.value=0);
if(RNbL4F.value=="") (RNbL4F.value=0);
if(RNbCs.value=="") (RNbCs.value=0);
if(RNbCd.value=="") (RNbCd.value=0);
if(RNbCt.value=="") (RNbCt.value=0);
if(RNbC4.value=="") (RNbC4.value=0);
if(RNbC5.value=="") (RNbC5.value=0);
if(RNbC6.value=="") (RNbC6.value=0);
if((RNbLTG.value) + (RNbLTF.value) + (RNbL4G.value)+ (RNbL4F.value) + (RNbCs.value) + 2 * (RNbCd.value) + 3 * (RNbCt.value) + 4 * (RNbC4.value) + 5 * (RNbC5.value) + 6 * (RNbC6.value) >9) {alert("Vous êtes trop nombreux !");
RNbLTG.focus(); return false;
}
return true;
}
//-->
</script>
<form method="POST" action="r03.asp" onSubmit="return testform(this.RNbLTG,this.RNbLTF,this.RNbL4G,this.RNbL4F,this.RNbCs,this.RNbCd,this.RNbCt,this.RNbC4,this.RNbC5,this.RNbC6)">
<p>
<b>JE RÉSERVE UN OU PLUSIEURS <font color="#FF0000"> <u> LITS</u> </font> EN CHAMBRES A PARTAGER (NON MIXTES)<br>
</b><input type="text" name="RNbLTG" size="2"> lits en chambres triples pour garçons <br>
<input type="text" name="RNbLTF" size="2"> lits en chambres triples pour filles<br>
<input type="text" name="RNbL4G" size="2"> lits en chambres de 4 lits et plus pour garçons<br>
<input type="text" name="RNbL4F" size="2"> lits en chambres triples de 4 lits et plus pour filles</p>
<p>
<b>
JE RÉSERVE UNE OU PLUSIEURS <font color="#FF0000"> <u> CHAMBRES</u></font><br>
</b><br>
<input type="text" name="RNbCs" size="2"> chambres simples<br>
<input type="text" name="RNbCd" size="2"> chambres doubles <br>
<input type="text" name="RNbCt" size="2"> chambres triples<br>
<input type="text" name="RNbC4" size="2"> chambres de 4 lits <br>
<input type="text" name="RNbC5" size="2"> chambres de 5 lits
<br>
<input type="text" name="RNbC6" size="2"> chambres de 6 lits
</p>
<p><input type="submit" value="Suivant" name="BTOK"> (étape 2 sur 4)</p>
</form>
Il ya un bug quelquepart dans le code car il me repond "le total est trop élevé dans presque tous les cas (sauf si tout est null ou a zéro ou par exemple égale à 0,1).
Je mets si dessous une copie du code réel qui me pose pb.
Merci encore de votre aide.
<script language="JavaScript">
<!--
function testform(RNbLTG,RNbLTF,RNbL4G,RNbL4F,RNbCs,RNbCd,RNbCt,RNbC4,RNbC5,RNbC6){
if(RNbLTG.value=="") (RNbLTG.value=0);
if(RNbLTF.value=="") (RNbLTF.value=0);
if(RNbL4G.value=="") (RNbL4G.value=0);
if(RNbL4F.value=="") (RNbL4F.value=0);
if(RNbCs.value=="") (RNbCs.value=0);
if(RNbCd.value=="") (RNbCd.value=0);
if(RNbCt.value=="") (RNbCt.value=0);
if(RNbC4.value=="") (RNbC4.value=0);
if(RNbC5.value=="") (RNbC5.value=0);
if(RNbC6.value=="") (RNbC6.value=0);
if((RNbLTG.value) + (RNbLTF.value) + (RNbL4G.value)+ (RNbL4F.value) + (RNbCs.value) + 2 * (RNbCd.value) + 3 * (RNbCt.value) + 4 * (RNbC4.value) + 5 * (RNbC5.value) + 6 * (RNbC6.value) >9) {alert("Vous êtes trop nombreux !");
RNbLTG.focus(); return false;
}
return true;
}
//-->
</script>
<form method="POST" action="r03.asp" onSubmit="return testform(this.RNbLTG,this.RNbLTF,this.RNbL4G,this.RNbL4F,this.RNbCs,this.RNbCd,this.RNbCt,this.RNbC4,this.RNbC5,this.RNbC6)">
<p>
<b>JE RÉSERVE UN OU PLUSIEURS <font color="#FF0000"> <u> LITS</u> </font> EN CHAMBRES A PARTAGER (NON MIXTES)<br>
</b><input type="text" name="RNbLTG" size="2"> lits en chambres triples pour garçons <br>
<input type="text" name="RNbLTF" size="2"> lits en chambres triples pour filles<br>
<input type="text" name="RNbL4G" size="2"> lits en chambres de 4 lits et plus pour garçons<br>
<input type="text" name="RNbL4F" size="2"> lits en chambres triples de 4 lits et plus pour filles</p>
<p>
<b>
JE RÉSERVE UNE OU PLUSIEURS <font color="#FF0000"> <u> CHAMBRES</u></font><br>
</b><br>
<input type="text" name="RNbCs" size="2"> chambres simples<br>
<input type="text" name="RNbCd" size="2"> chambres doubles <br>
<input type="text" name="RNbCt" size="2"> chambres triples<br>
<input type="text" name="RNbC4" size="2"> chambres de 4 lits <br>
<input type="text" name="RNbC5" size="2"> chambres de 5 lits
<br>
<input type="text" name="RNbC6" size="2"> chambres de 6 lits
</p>
<p><input type="submit" value="Suivant" name="BTOK"> (étape 2 sur 4)</p>
</form>
SirHill
Messages postés
4060
Date d'inscription
vendredi 19 mars 2004
Statut
Contributeur
Dernière intervention
19 avril 2020
543
16 avril 2004 à 01:15
16 avril 2004 à 01:15
Salut Abba,
Il ne s'agit pas d'un bug, c'est "normal" ;-) il faut revoir la fonction!
Le problème se situe à la ligne 14, quand le test a lieu:
if((RNbLTG.value) + (RNbLTF.value) + (RNbL4G.value)+ (RNbL4F.value) + (RNbCs.value) + 2 * (RNbCd.value) + 3 * (RNbCt.value) + 4 * (RNbC4.value) + 5 * (RNbC5.value) + 6 * (RNbC6.value) >9)
Pour que la condition soit remplie, il faut que toutes les valeurs soient égales à 0 ou négatives en considérant les entiers.
On va prendre des exemples:
* Toutes mes valeurs sont égales à 0:
si (( 0 + 0 + 0 + 0 + 0 + 2 * 0 + 3 * 0 + 4 * 0 + 5 * 0 + 6 * 0 ) > 9) : c'est faux (le total est égal à 0), la condition n'est pas remplie, le message d'alerte ne s'affiche pas.
* Mes valeurs sont négatives (c'est juste pour l'exemple):
si (( -3 + -2 + -7 + -1 + -4 + 2 * -1 + 3 * -8 + 4 * -1 + 5 * -8 + 6 * -7 ) > 9) : c'est faux (le total est égal à -129 dans cet exemple), la condition n'est pas remplie, le message d'alerte ne s'affiche pas.
* Mes valeurs sont positives (cas qui t'intéresse):
si (( 1 + 1 + 1 + 1 + 1 + 2 * 1 + 3 * 1 + 4 * 1 + 5 * 1 + 6 * 1 ) > 9) : c'est vrai (le total est égal à 25), la condition est remplie, le message d'alerte s'affiche.
Pour remédier à ce problème, il suffit de modifier la formule. Je ne sais pas ce que tu veux exactement, il faudrait savoir quelle est la valeur maximale pour chaque cas de figure! (Si tu as un problème, tu peux toujours me donner les valeurs maxi que tu souhaites avoir pour chaque entité, et je te donnerai la formule).
Autre chose, tu pourrais aussi faire apparaître un message d'erreur lorsque tous les champs sont nuls, du style "Veuillez réserver au moins une chambre!" :-)
Voilà, bon courage et tiens-moi au courant
@+
SirHill
Il ne s'agit pas d'un bug, c'est "normal" ;-) il faut revoir la fonction!
Le problème se situe à la ligne 14, quand le test a lieu:
if((RNbLTG.value) + (RNbLTF.value) + (RNbL4G.value)+ (RNbL4F.value) + (RNbCs.value) + 2 * (RNbCd.value) + 3 * (RNbCt.value) + 4 * (RNbC4.value) + 5 * (RNbC5.value) + 6 * (RNbC6.value) >9)
Pour que la condition soit remplie, il faut que toutes les valeurs soient égales à 0 ou négatives en considérant les entiers.
On va prendre des exemples:
* Toutes mes valeurs sont égales à 0:
si (( 0 + 0 + 0 + 0 + 0 + 2 * 0 + 3 * 0 + 4 * 0 + 5 * 0 + 6 * 0 ) > 9) : c'est faux (le total est égal à 0), la condition n'est pas remplie, le message d'alerte ne s'affiche pas.
* Mes valeurs sont négatives (c'est juste pour l'exemple):
si (( -3 + -2 + -7 + -1 + -4 + 2 * -1 + 3 * -8 + 4 * -1 + 5 * -8 + 6 * -7 ) > 9) : c'est faux (le total est égal à -129 dans cet exemple), la condition n'est pas remplie, le message d'alerte ne s'affiche pas.
* Mes valeurs sont positives (cas qui t'intéresse):
si (( 1 + 1 + 1 + 1 + 1 + 2 * 1 + 3 * 1 + 4 * 1 + 5 * 1 + 6 * 1 ) > 9) : c'est vrai (le total est égal à 25), la condition est remplie, le message d'alerte s'affiche.
Pour remédier à ce problème, il suffit de modifier la formule. Je ne sais pas ce que tu veux exactement, il faudrait savoir quelle est la valeur maximale pour chaque cas de figure! (Si tu as un problème, tu peux toujours me donner les valeurs maxi que tu souhaites avoir pour chaque entité, et je te donnerai la formule).
Autre chose, tu pourrais aussi faire apparaître un message d'erreur lorsque tous les champs sont nuls, du style "Veuillez réserver au moins une chambre!" :-)
Voilà, bon courage et tiens-moi au courant
@+
SirHill
Merci encore SirHill mais je persiste à douter de mon code car si par exemple je mets RnbLTF=1 et tout le reste à zéro, il m'affiche quand même le message "vous êtes trop nombreux" alors que 1<9 ! ;-)
Abba
Abba
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SirHill
Messages postés
4060
Date d'inscription
vendredi 19 mars 2004
Statut
Contributeur
Dernière intervention
19 avril 2020
543
17 avril 2004 à 00:26
17 avril 2004 à 00:26
Salut Abba
J'ai trouvé le bug...
En prenant ton exemple (si par exemple je mets RnbLTF=1 et tout le reste à zéro), j'ai testé la valeur en sortie et ça me renvoie... 100000!
La formule concatène en fait les valeurs retournées. Pour y remédier, il faut convertir la chaîne renvoyée par chaque champ de texte, comme ceci:
http://www.toutjavascript.com/faq/index.php3?ID=56
Bon courage et tiens-moi au courant
@+
J'ai trouvé le bug...
En prenant ton exemple (si par exemple je mets RnbLTF=1 et tout le reste à zéro), j'ai testé la valeur en sortie et ça me renvoie... 100000!
La formule concatène en fait les valeurs retournées. Pour y remédier, il faut convertir la chaîne renvoyée par chaque champ de texte, comme ceci:
http://www.toutjavascript.com/faq/index.php3?ID=56
Bon courage et tiens-moi au courant
@+