Actualiser frais de port en Javascript

Fermé
Mr_SATAN - Modifié par Mr_SATAN le 10/08/2011 à 14:29
 Mr_SATAN - 16 août 2011 à 12:03
Bonjour,

Je travaille sur un formulaire de livraison de pizza et il me manque un tout petit détail pour que celui-ci soit complètement fonctionnel.

J'ai un script Javascript qui permet de choisir entre la "Livraison à domicile" et "Récupérer sa commande" en magasin. La Livraison inclue un frais de port supplémentaire (déclaré en PHP depuis une base de données) qu'on ne doit évidemment pas ajouter à la facture si le client choisit de venir chercher sa commande en magasin. En cliquant sur le bouton radio je souhaite que les frais de port soit ajoutés ou soustrait selon le type de commande qu'on sélectionne.

Le script en question permet actuellement de montrer/masquer les champs dont le client a besoin pour passer commande (on a pas besoin de son adresse postale s'il récupère sa commande par exemple). Le problème c'est qu'on cache également le frais de port mais qu'il est quand même ajouté au total :


function visibilite(thingId)    
 {    
 var targetElement;    
 targetElement = document.getElementById(thingId) ;   
 if (targetElement.style.display == "none")    
  {    
  targetElement.style.display = "" ;   
  }    
 else    
  {    
  targetElement.style.display = "none" ;   
  }    
 }



Je me débrouille en PHP mais je suis un vrai newbie en Javascript. Pourriez-vous m'aider à y voir plus clair en me proposant un début de code ou une piste svp ? :)

4 réponses

kevin_nord59 Messages postés 414 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 10 février 2014 72
10 août 2011 à 19:49
Bonjour, sa fait longtemps que je n'ai plus toucher au javascript donc il peut y avoir quelques erreurs ;) :
En gros une solution possible ,c'est mettre un événement OnClick sur tes boutons radio :
<input type="radio" name="domicile" id="domicile" onclick="test()" />
<input type="radio" name="emporter" id="emporter" onclick="test()" />
donc a chaque fois que l'on va cliquer sur "a emporter" ou "a domicile" la fonction test() va être appeler, cette fonction devrait ressembler a sa
test()
{
if(document.formulaire.domicile.checked)
{
PrixTotal=Prix+FraisDePort
}
else
{
PrixTotal=Prix
}
}
J'espère t'avoir aider
0
Merci pour ta réponse Kevin !

Je pensais bien faire un truc comme ça mais directement en l'intégrant à ma fonction qui cache/montre le formulaire d'adresse pour la livraison (voir premier message).

Mon problème c'est que je ne sais pas comment faire apparaître le résultat de ce calcul sur ma page PHP :(
0
kevin_nord59 Messages postés 414 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 10 février 2014 72
12 août 2011 à 21:31
Pour Changer le prix sans recharger la page ceci devrait fonctionner :
code Javascript :

ChangerPrix()
{
  if(document.formulaire.domicile.checked)
  {
     document.getElementById("Prix").innerHTML =Prix+2.5; //Prix avec frais de port 
  }
  else
  {
     document.getElementById("Prix").innerHTML =Prix; //Prix sans frais de port
  }
} 

code HTML :

<input type="radio" name="domicile" id="domicile" onclick="ChangerPrix()" />
<input type="radio" name="emporter" id="emporter" onclick="ChangerPrix()" /> 

<span id=Prix> </span> <!-- Endroit ou va s'afficher le prix -->
0
Salut Kevin !

Bon, j'ai essayé de bidouiller à partir de ton bout de code mais je n'arrive pas à faire fonctionner le script... Je pense qu'il s'agit d'une erreur de syntaxe.
Voilà mon code :

  function mode() 
   { 
     if(document.getElementById("livraison").checked) // Si le bouton "livraison" est sélectionné 
     { 
     var total = document.getElementById("total").value; 
     var fdl = document.getElementById("fdl").value; 
     document.getElementById("f_livraison").style.display = "block"; // On affiche la ligne "frais de livraison" du récapitulatif 
     document.getElementById("livrer").style.display = "block"; // On affiche le tableau "livrer" (contenant les champs d'adresse) 
     document.getElementById("total").innerHTML = total + fdl; //Prix avec frais de port  
     } 
     else 
     { 
     var total = document.getElementById("total").value; 
     var fdl = 0; 
     document.getElementById("f_livraison").style.display = "none"; // On masque la ligne "frais de livraison" du récapitulatif 
     document.getElementById("livrer").style.display = "none"; // on masque le tableau "livrer" (contenant les champs d'adresse) 
     document.getElementById("total").innerHTML = total; //Prix sans frais de port 
     } 
   }  


La fonction a 3 buts :
- Calculer le prix avec et sans frais de livraison
- Masquer/afficher le formulaire d'adresse du client
- Masquer/afficher la ligne récapitulant les frais de port

Pourrais-tu jeter un coup d'oeil et me dire ce qui cloche stp ?
0