Bonjour, j'ai trouvé un petit script pour calculer automatiquement des champs dans un formulaire, cependant mes deux derniers champs ne se calculent pas. J'ai vérifier le script, mais je n'ai rien trouvé d'anormal.
Les 3 derniers champs ne fonctionnent pas. Lorsque je, mais la variable 1 aux frais d'envoie, cela l'écrit dans le champ 12x18. Les 2 derniers, fonctionne pas du tout
pouvez-vous m'aider s.v.p.?
Je vous donne mon script :
<HTML>
<HEAD>
<TITLE>Estimateur</TITLE>
<!-- J.-D. Bonjour / SI-DGR / 26.6.99 -->
<SCRIPT LANGUAGE="JavaScript">
<!--
function test_champ(champ) {
expr_reg = /^\d*$/ ;
// Ci-dessus : expression régulière qui match 0,1 ou plusieurs chiffres ;
// de cette façon on vérifie que l'utilisateur entre bien un nombre entier
if ( expr_reg.test(champ.value) ) {
// c'est bien un nombre entier
calcul_form() ;
} else {
// ce n'est pas un nombre entier
alert ("Ce n'est par un nombre entier !") ;
document.form1.elements[champ.name].value = "" ; // on efface la valeur entrée erronée
calcul_form() ;
}
}
function calcul_form() {
// le with ci-dessous permet d'abréger "document.forms.form1.p1.value" en "p1.value"
with (document.forms.form1) {
p1.value = q1.value * pu1.value ;
p2.value = q2.value * pu2.value ;
p3.value = q3.value * pu3.value ;
p4.value = q4.value * pu4.value ;
p5.value = q5.value * pu5.value ;
p5.value = q6.value * pu6.value ;
p5.value = q7.value * pu7.value ;
total.value = p1.value *1 + p2.value *1 + p3.value *1 + p4.value *1 + p5.value *1 + p6.value *1 + p7.value *1 ;
// Ai mis les *1 ci-dessus afin que les + fassent une somme arithmétique
// et non pas une concaténation de chaînes de caractères
}
}
function champ_verrouille(champ,valeur) {
// Remarque : en HTML 4.0, il existe un attribut "read-only" pour la
// balise <INPUT TYPE=text> qui interdira de modifier un champ
// mais ce que je fais ci-dessous est beaucoup plus sûr !!!
// alert ("Ce champ de peut pas être modifié !") ;
document.form1.elements[champ.name].value = valeur ; // on remet "valeur" initiale dans champ
}
function soumettre_form() {
if ( document.forms.form1.total.value == 0 ) {
alert ("Vous n'avez rien commandé !\n => commande non soumise") ;
return false ;
} else {
// Les 2 lignes ci-dessous devraient être activées pour réellement passer le form. à script CGI
// document.form1.method = "POST" ;
// document.form1.action = "http://dgrwww.epfl.ch/cgi-bin/uncgi/mail_form.sh?mailto=Jean-Daniel.Bonjour@epfl.ch" ;
document.write ("<H3 ALIGN=center>Commande passée\n pour un montant de " +
document.forms.form1.total.value + " Frs</H3>") ;
document.close () ;
return true ;
}
}
// -->
</SCRIPT>
<style type="text/css">
<!--
.Style1 {color: #FF0000}
.Style3 {color: #FFFFFF}
.Style4 {color: #000000; }
-->
</style>
<NOSCRIPT>
<B>Votre browser ne supporte pas JavaScript et ne peut par conséquent pas exploiter
les fonctionnalités de cette page Web</B>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onLoad="calcul_form()" CLASS="page">
<H3 ALIGN=center>Test</H3>
<HR><P>
<FORM NAME="form1">
<CENTER>
<TABLE width="35%" BORDER="1" CELLSPACING="0" BGCOLOR="#000066">
<TR BGCOLOR="#CCCCCC">
<TH WIDTH=19% class="Style4">Quantité
<TD WIDTH=49% class="Style1"><span class="Style4"><B>Article</B>
</span>
<TH WIDTH=17% class="Style4">Prix unitaire
<TH WIDTH=15% class="Style4">Prix
<TR>
<TH><INPUT TYPE="text" NAME="q1" SIZE=3 MAXLENGTH=3 onBlur="test_champ(this)">
<TD><span class="Style3">Photos 4x6 </span>
<TH><INPUT TYPE="text" NAME="pu1" VALUE="0.32" SIZE=5 onChange="champ_verrouille(this,0.32)">
<TH><INPUT TYPE="text" NAME="p1" SIZE=8>
<TR>
<TH><INPUT TYPE="text" NAME="q2" SIZE=3 MAXLENGTH=3 onBlur="test_champ(this)">
<TD><span class="Style3">Photos 5x7
</span>
<TH><INPUT TYPE="text" NAME="pu2" VALUE="0.80" SIZE=5 onChange="champ_verrouille(this,0.80)">
<TH><INPUT TYPE="text" NAME="p2" SIZE=8>
<TR>
<TH><INPUT TYPE="text" NAME="q3" SIZE=3 MAXLENGTH=3 onBlur="test_champ(this)">
<TD><span class="Style3">Photos 8x12</span>
<TH><INPUT TYPE="text" NAME="pu3" VALUE="2.60" SIZE=5 onChange="champ_verrouille(this,2.60)">
<TH><INPUT TYPE="text" NAME="p3" SIZE=8>
<TR>
<TH><INPUT TYPE="text" NAME="q4" SIZE=3 MAXLENGTH=3 onBlur="test_champ(this)">
<TD><span class="Style3">Photos 11x16
</span>
<TH><INPUT TYPE="text" NAME="pu4" VALUE="6.00" SIZE=5 onChange="champ_verrouille(this,6.00)">
<TH><INPUT TYPE="text" NAME="p4" SIZE=8>
<TR>
<TH><INPUT TYPE="text" NAME="q5" SIZE=3 MAXLENGTH=3 onBlur="test_champ(this)">
<TD><span class="Style3">12x18</span>
<TH><INPUT TYPE="text" NAME="pu5" VALUE="7.50" SIZE=5 onChange="champ_verrouille(this,7.50)">
<TH><INPUT TYPE="text" NAME="p5" SIZE=8>
<TR>
<TH><INPUT TYPE="text" NAME="q6" SIZE=3 MAXLENGTH=3 onBlur="test_champ(this)">
<TD><span class="Style3">DVD</span>
<TH><INPUT TYPE="text" NAME="pu6" VALUE="10.00" SIZE=5 onChange="champ_verrouille(this,10.00)">
<TH><INPUT TYPE="text" NAME="p6" SIZE=8>
<TR>
<TH><INPUT TYPE="text" NAME="q7" SIZE=3 MAXLENGTH=1 onBlur="test_champ(this)">
<TD><span class="Style3">Frais d'envoie</span>
<TH><INPUT TYPE="text" NAME="pu7" VALUE="5.00" SIZE=5 onChange="champ_verrouille(this,5.00)">
<TH><INPUT TYPE="text" NAME="p7" SIZE=8>
<TR>
<TR>
<TD COLSPAN=3 ALIGN=right BGCOLOR="#CCCCCC"><B>Total $ Canadien </B>
<TH><INPUT TYPE="text" NAME="total" SIZE=8>
</TABLE>
<P>
<INPUT TYPE="RESET" VALUE="Effacer" >
</CENTER>
</FORM>
<P><HR>
</BODY>
</HTML>
Partager