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 :

Affichage / masquage d'élements de formulaire


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Affichage / masquage d'élements de formulaire
    Bonjour,

    J'ai développé un petit script qui permet d'obtenir le prix total d'un produit suivant les options choisies (ici ce sont des cartes de visite). Le seul problème est que le total ne s'affiche pas ni les listes déroulantes qui doivent apparaitre en fonction du format choisi.
    Je ne comprends pas pourquoi ça ne fonctionne pas, le code me semble pourtant juste.

    Javascript
    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
     
     
    <script language="javascript">
     
    function format_papier()
    {
    	var type = document.getElementById("format"); 
    	if(type.value == "rectangle")	
    	{
    		var prixF = 0.19;
    		if(document.getElementById('rectangle').style.display =="none")
    		{
    			//on rend visible la liste de choix de ddimension correspondante au rectangle
    			document.getElementById('rectangle').style.display = 'block';
    		}
    		if(document.getElementById('rond').style.display =="block")
    		{
    			//on cache la liste de choix de ddimension correspondante au rond
    			document.getElementById('rond').style.display = "none";
    		}
     
     
    	}
     
    	else if (type.value=="rond")	
    	{ 
    		var prixF = 0.22; 
    		if(document.getElementById('rond').style.display =="none")
    		{
    			//on rend visible la liste de choix de ddimension correspondante au rond
    			document.getElementById('rond').style.display = 'block';
    		}
    		if(document.getElementById('rectangle').style.display =="block")
    		{
    			//on cache la liste de choix de ddimension correspondante au rectangle
    			document.getElementById('rectangle').style.display = "none";
    		}	
    	}	
    	return prixF;
    }
     
     
     
    function type_papier()
    {
    	var type = document.getElementById("papier");
    	if(type.value == "mat")	
    	{
    		var prixP = 0.00;
    	}	
    	else	
    	{	
    		var PrixP =0.25;
    	}	
    	return prixP;
    }
     
    function type_impression()
    {
    	var type = document.getElementById("impression");
    	if(type.value == "recto")	
    	{
    		var prixIm = 0.00;
    	}	
    	else	
    	{
    		var prixIm=0.15;
    	}	
    	return prixIm;
    }
     
    function calcul_total()
    {
       	// On récupère les valeurs de chaque options grâce à l'appel des fonctions
    	var prixFormat = format_papier(); 
    	var prixPapier = type_papier();
    	var prixImpression = type_impression(); 
    	var quantite=document.getElementById('qtite');
     
    	if(quantite.value !="")
    	{
    		//si choix autre que la ligne --choisissez --
    		var prixTotal= (parseFloat(prixFormat) + parseFloat(prixPapier) + parseFloat(prixImpression)) * quantite.value;
    		var total=document.getElementById('total');
    		total.value=prixTotal; //on ecrit le resultat dans l'input total
    	}
    	else
    	{
    		return false;
    	}
    }
     
    </script>


    Le formulaire HTML
    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
     
    <form method="POST" name="carte" action="ton_script.php">      	
         	<label >Format:</label>
           <select name="format" id="format" onchange="format_papier();">
     
    			<option value="">-- Choisissez --</option>	   
    			<option value="rectangle">Rectangulaire</option>	   
    			<option value="rond">Ronde</option>	  		   
    	   </select>
    		<br/><br />
     
     
     
     
            <div id="rectangle" style="display:none">
           <label >Dimensions:</label>
           <select name="dim" id="dim">
    			<option value="80*126">80*126</option>	   	
    		</select> 
    		mm<br/><br>
    	   </div>
     
            <div id="rond" style="display:none">
           <label >Dimensions:</label>
           <select name="dimension" id="dimension">
           <option value="80*58">80*58</option>	   	
    	   </select> mm<br/><br>
    	   </div>
     
           <label >Impression:</label>
    	   <select name="impression" id="impression" onchange="type_impression();">
           <option value="recto">Recto</option>	 
           <option value="rv">Recto/Verso</option>	  	   
    	   </select><br /><br />
     
     
            <label >Papier:</label>
    	   <select name="papier" id="papier" onchange="type_papier();">
           <option value="mat">mat</option>	 
           <option value="brillant">brillant</option>	  	   
    	   </select><br /><br />
     
    		<label >Quantité:</label>
    	   <select name="qtite" id="qtite" onChange="calcul_total();">
    			<option value="">-- Choisissez --</option>
           <option value="100">100</option>	 
           <option value="250">250</option>	 
           <option value="500">500</option>
           <option value="1000">1000</option>		 	   
    	   </select><br /><br />
     
            Prix: <input type="text" name="total" id="total" onclick="calcul_total();"/>
     
       </form>
    Si quelqu'un peut m'aider =(
    Merci.

    P.S: Merci à Alain_42 pour l'amélioration de ce code

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Le script est correct et fonctionne parfaitement.
    Par contre, vous n'avez peut-être pas codé ce que vous désiriez.
    La liste de dimensions est bien mise à jour lorsqu'on change le format. Quant à lui, le Prix Total est calculé lorsqu'on change la quantité ou bien que l'on clique sur le champ Prix.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/02/2010, 11h09
  2. Formulaire de recherche et affichage / masquage du résultat
    Par Sandkura dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/07/2008, 09h26
  3. affichage d'un nom dans formulaire
    Par moufflon dans le forum IHM
    Réponses: 2
    Dernier message: 09/02/2006, 15h26
  4. affichage plein écran d'un formulaire
    Par le géologue dans le forum IHM
    Réponses: 6
    Dernier message: 17/10/2005, 10h29
  5. affichage sur ouverture d'un formulaire
    Par DurDur dans le forum Access
    Réponses: 4
    Dernier message: 04/09/2005, 11h31

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