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 :

calcul dans un formulaire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 77
    Par défaut calcul dans un formulaire
    Bonjour je désire effectuer un formulaire de calcul ( sans recharger la page) et je n'y arrive pas.....
    Ca ne se calcule pas :

    Voici le formulaire en question :

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <HTML>
      <HEAD>
      <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1">
      <TITLE>Bon de commande DIVION</TITLE>
     <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 ;
            total.value = p1.value *1 + p2.value *1 + p3.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>
      </HEAD>
      <BODY BGCOLOR="white" onLoad="calcul_form()" >
     
     
     
    <table width="100%">
    <!--utilisation d'un tableau qui occupera toute la page-->
    	<tr>
    		<td>
    		<table width="100%" align="center" border=1>
    			<tr>
    			<td align="center">
    			VILLE DE DIVION<BR>
    			1, rue Pasteur<BR>
    			BP9<BR>
    			Tel : 0321645570<BR>
    			Fax : 0321645583<BR>
    			Mel : <a href="mailto:contact@ville-divion.fr">contact@ville-divion.fr</a><BR>
    			Mel : <a href="mailto:achatpublic@ville-divion.fr">achatpublic@ville-divion.fr</a><BR>
    			</td>
     
     
    				<td align="center">		
    <FORM>
    Nom du fournisseur :
    <INPUT TYPE="text" NAME="nom" VALUE="" SIZE="20" MAXLENGth="20">
    <BR>
    Adresse du fournisseur :
    <INPUT TYPE="text" NAME="nom" VALUE="" SIZE="20" MAXLENGTH="20">
    <BR>
    Ville :
    <INPUT TYPE="text" NAME="nom" VALUE="" SIZE="20" MAXLENGTH="20">
    <BR>
    FAX :
    <INPUT TYPE="text" NAME="nom" VALUE="" SIZE="20" MAXLENGTH="20">
    <BR>
    LIEU DE LIVRAISON
    <SELECT NAME="LIEU"
    <OPTION VALUE="st">Service technique
    <OPTION SELECTED VALUE="m">Mairie
    <OPTION VALUE="elc">Education Loisirs et Citoyenneté
    </SELECT>
     
    				</td>
    		<td align="center">
     
    	<?php
     	echo "Date du jour : ".date("d-m-Y")."<br>";
    //affiche la date du jour d'utilisation du serveur par le client
    ?>	
    <BR>Action</BR>
    <INPUT TYPE="checkbox" NAME="Livraison"> Livraison
    <INPUT TYPE="checkbox" NAME="Retrait"> Retrait
    <INPUT TYPE="checkbox" NAME="Autre"> Autre
    <INPUT TYPE="checkbox" NAME="Transmission" CHECKED> Transmettre au fournisseur		
    		</td>
    <tr>
    <td colspan=4 align="center">
     
    Ne seront reconnus par le Ville de Divion que les services faits en exécution d’un bon de commande régulier dûment numéroté, visé et signé par le responsable achat											
    </td>
    </tr>
    <TABLE width="100%" BORDER="1" CELLSPACING="0" BGCOLOR="#FFFFAA">
      <TR BGCOLOR="#CCCCCC">
    	<TD WIDTH=70%><B>Réference fournisseur et désignation</B>
        <TH >Quantité
        <TH>Prix unitaire TTC
        <TH>Prix total TTC
    	</TR>
    <TH><INPUT TYPE="text" size="125">	
    <TH><INPUT TYPE="text" NAME="q1" SIZE=3 MAXLENGTH=4 onBlur="test_champ(this)">
    <TH><INPUT TYPE="text" NAME="pu1" SIZE=3 VALUE="" MAXLENGTH=4 ">
    <TH><INPUT TYPE="text" NAME="p1" SIZE=8 MAXLENGTH=4>
     
     
     
     
     
     
     
    </BODY>
    Merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    les .value sont de type "caractère".

    Pour faire des calculs, il faut les convertir avec parseInt() ou parseFloat().

    A+

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 77
    Par défaut
    Merci mais peux tu m'en dire plus...
    Car la j'ai changé un peu mon code et ca fonctionne ca me calcule mes résultats.
    Il y avait aussi une erreur de nom du formulaire

    Mais ton astuce m'intéresse...

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 77
    Par défaut
    Tout compte fait ca ne fonctionne pas, je vais les convertir, peux tu me dire l'astuce..

    Merci d'avance

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par chegerg Voir le message
    peux tu me dire l'astuce..
    Ce n'est pas une "astuce", juste le fonctionnement "normal" de JavaScript.
    Un exemple dans ton code, en supposant que la quantité est un entier, et le prix un réel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p1.value = parseInt(q1.value, 10) * parseFloat(pu1.value, 10) ;
    Le second paramètre (10) doit être conservé afin d'éviter un bug connu (en gros, sans, il ne convertirait pas forcément en base 10, ce qui réserve des surprises).

    A+

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 77
    Par défaut
    Merci ca fonctionne , mais comment puis je faire pour que cela se recharge automatiquement la page pour que l'utilisateur n'a pas besoin de faire F5, car la ca ne change que quand la quantité change, j'ai essayé mais rien y fait.

    De plus j'espere pas trop en demander, peux tu m'orienter vers un calcul de TVA
    a 5.5 % et 19,6 %, c'est a dire l'utilisateur coche une des deux TVA et cela s'applique au calcul, tout en ayant une trace du prix HT.

    J'espère avoir été clair

    Merci d'avance....

Discussions similaires

  1. Calcul dans un formulaire
    Par mikaloop dans le forum Access
    Réponses: 4
    Dernier message: 18/04/2006, 15h24
  2. disparition des calculs dans un formulaire
    Par OBIWAN64 dans le forum Access
    Réponses: 6
    Dernier message: 24/03/2006, 12h05
  3. problème de calcul dans un formulaire
    Par Bray02 dans le forum IHM
    Réponses: 1
    Dernier message: 07/12/2005, 11h45
  4. Calculs dans sous-Formulaire
    Par Bernjean dans le forum Access
    Réponses: 5
    Dernier message: 17/11/2005, 18h29
  5. Pb champ calcule dans sous formulaire
    Par Brial dans le forum Access
    Réponses: 6
    Dernier message: 12/11/2005, 18h33

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