Bonjour à tous, j'ai crée un sciprt en java pour afficher des prix en fonction de liste déroulantes liées et bouton radio.
Le voici
Le HTML
Le CSS
Il fonctionne mais correctement. Par défaut c'est le premier bouton radio 'carte de visite' qui est coché. Mais pour avoir le prix il faut que je coche l'un des deux autres et que je revienne dessus après.
Même chose pour le choix de l'envoi il ne s'additionne pas tout de suite. Il faut faire des allez et retour pour que le calcul se fasse.
Quelqu'un voie ce qui ne va pas ?
[/i][/i][/i][/i]
Le voici
<script language="javascript">
var cat, sel, tab;
function Affiche_liste(id_ensemble_select,id_select){
sel=document.getElementById(id_ensemble_select);
cat=id_select;
tab = sel.getElementsByTagName("select");
for (i=0; i < tab.length; i++){
tab[i].disabled = true;
tab[i].style.display = 'none';
}
document.getElementById(cat).disabled = false;
document.getElementById(cat).style.display = 'inline';
}
function calcul(total,categorie,tva)
{ // on se limite à une quantité avec un taux de TVA et des frais de port
x=document.getElementById(cat);;c=(1*x.value);// quantite
x=document.getElementById(tva);t=(1*x.value); // le taux de TVA
// les frais de port (boucle car bouton radio)
for(i=0;i<document.frm.port.length;i++){
if(document.frm.port[i].checked){f=(1*document.frm.port[i].value);}
}
r=(c*(1+(t/100)))+f; //On calcule
x=document.getElementById(total);x.value=r; // On affecte
Math.round(total*1000)/1000
}
</script>
Le HTML
<html>
<head>
</head>
<body>
<form name="frm">
<p class="titre">Calcul Prix</p>
<fieldset id="calculprix">
<label>PRODUIT : </label>
<p><label for="choix_visites">Carte de visites (84x55mm)</label>
<input type="radio" id = "choix_visites" name = "cat" value = "visites" class = "categorie" tabindex="0" onclick = "Affiche_liste(this.className,this.value)" input checked="hidden" />
<p><label for="choix_fairepart">Faire part(148x105mm)</label>
<input type="radio" id = "choix_fairepart" name = "cat" value = "part" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" /></p>
<p><label for="choix_correspondance">Carte de correspondance (210x99mm)</label>
<input type="radio" id = "choix_correspondance" name = "cat" value = "corres" class = "categorie" onclick = "Affiche_liste(this.className,this.value)" />
</select></p>
</p>
</p>
<p id = "categorie">
<label>QUANTITE </label>
<select name = "selection" id = "visites" onBlur="calcul('total','categorie','tva')" style="display: inline: none;">
<option value=>choisissez</option>
<option value="59">100</option>
<option value="61">200</option>
<option value="69">500</option>
<option value="79">1000</option>
<option value="91">2000</option>
<option value="138">5000</option>
<option value="199">10 000</option>
<option value="">+10 000 - Nous consulter</option>
</select>
<select name = "selection" id = "part" style="display: none; " disabled="" onBlur="calcul('total','categorie','tva')">
<option value=>choisissez</option>
<option value="66">100</option>
<option value="69">200</option>
<option value="78">500</option>
<option value="88">1000</option>
<option value="109">2000</option>
<option value="179">5000</option>
<option value="281">10 000</option>
<option value="">+10 000 - Nous consulter</option>
</select>
<select name = "selection" id = "corres" style="display: none; " disabled="" onBlur="calcul('total','categorie','tva')">
<option value=>choisissez</option>
<option value="69">100</option>
<option value="76">200</option>
<option value="82">500</option>
<option value="94">1000</option>
<option value="118">2000</option>
<option value="199">5000</option>
<option value="322">10 000</option>
<option value=""class="style1">+10 000 - Nous consulter</option>
</select>
</p>
<P><label for="TVA">TVA :</label><select name="tva" id="tva" onChange="calcul('total','categorie','tva')">
<option value="0" selected>HT</option>
<option value="19.6">19,6%</option>
</select>
</p>
<p><label for="Frais de port">FRAIS DE PORT :</label>
<input id="port" type="radio" name="port" value="0" onClic="calcul('total','categorie','tva')" class="style2" checked> <label for="retrait sur place">Retrait sur place</label>
<input id="port" type="radio" name="port" value="11" onClick="calcul('total','categorie','tva')"class="style2"><label for="Collissimo">Collissimo</label></p>
</fieldset>
<p class="titre">Prix</p>
<fieldset id="titreprix">
<label for="total">Total :</label><input id="total" type="text" name="total" readonly tabindex="1" VALUE="Cliquer ici" STYLE="width=100">
</br></fieldset></body>
</html>
Le CSS
p.titre {
font-family:'orbitron',"verdana",sans-serif;
background:#19afc9;/* Couleur fond cadre */
color:#ffffff;
padding:.2em .3em;
font-size:1.2em;
border:2px outset #19afc9;
position:relative;
margin-bottom:-1em; /*marge de bas négative, ce qui fait que le titre viendra s'encastrer dans l'elément en-dessous */
width:10em;
margin-left:1em;
margin-top:1em;
padding:.2em .3em;
}
fieldset {
border:none;
margin-bottom:1em;
width:30em;
padding-top:1.5em;
}
select {
position:absolute;
margin-left:9em;/*Decalage liste déroulant vers la droite*/
margin-bottom:0;
}
/* fieldset Calcul prix */
fieldset#calculprix {
background:#e7e6e2;
border:outset #A4D8EE;
}
/* fieldset prix */
fieldset#titreprix {
background:#e7e6e2;
border:outset #A4D8EE;
}
#titrePrix label {
position:absolute;
font-size:90%;
padding-top:.2em;
left:20px;
}
#titrePrix input {/*Decalage case affichage totalvers la droite*/
margin-left:9em;
line-height:1.4em;
margin-bottom:.2em;
}
/* fieldset message */
fieldset#titretotal {
background:#e7e6e2;
border:outset #9DF2CE;
}
#total {
font-size:90%;
}
#total input {
margin-left:9em;
}
#total input + input {
margin-left:1em;
}
/* cases a cocher */
#cat {
font-size:90%;
}
#cat input {
margin-left:9em;
}
#cat input +input {
margin-left:1em;
}
#cat br+input {
margin-left:9em;
}
Il fonctionne mais correctement. Par défaut c'est le premier bouton radio 'carte de visite' qui est coché. Mais pour avoir le prix il faut que je coche l'un des deux autres et que je revienne dessus après.
Même chose pour le choix de l'envoi il ne s'additionne pas tout de suite. Il faut faire des allez et retour pour que le calcul se fasse.
Quelqu'un voie ce qui ne va pas ?
[/i][/i][/i][/i]