Merci déjà pour vos réponses, j'ai testé la première réponse et il ne se passe rien.
Oui, c'était théorique mais quand même tiré de mon code et j'avais apuré un peu pour faire moins long.
Mon formulaire est en fait composé de :
du champ prix_libre1 //ici l'utilisateur insère ce qu'il veut
du champ prix_libre2 //ici l'utilisateur insère ce qu'il veut
du champ prix_libre3 //ici l'utilisateur insère ce qu'il veut
du champ prix_libre4 //ici l'utilisateur insère ce qu'il veut
du champ montant_ht //ce champ va totaliser les 4 champs du dessus
du champ montant_tva //ce champ va calculer le montant_ht * 19.6%
du champ total_final //cd champ va additionner le montant_ht + la TVA
Voilà ceci est placé en réel.
Là je dois préciser que si je n'ai pas besoin de tester mes champs et que
je saisis dans l'ordre le champ 1, 2, 3 et 4 pour la saisie, tout est OK, mais
le problème survient si j'efface par exemple une valeur du champ 2 ou si
je commence à saisir le prix_libre2 et que je n'ai rien sur le prix_libre1.
Donc je vais vous mettre le code exact :
Ceci est l'insertion du champ et l'appel de la fonction (ca j'ai testé, ca fonctionne)
L'insertion du champ se passe ainsi :
echo $this->Form->input('prix_libre3', array('id'=>'prix_libre3','onChange'=>'calcul()'));
et ceci est ma fonction intégrale :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<script language="javascript">
function calcul()
{
var champ1 = document.getElementById("prix_libre1").value;
var champ2 = document.getElementById("prix_libre2").value;
var champ3 = document.getElementById("prix_libre3").value;
var champ4 = document.getElementById("prix_libre4").value;
var champ5 = document.getElementById("montant_ht").value;
var champ6 = document.getElementById("montant_tva").value;
if ((isNaN(champ1))&&(isNaN(champ2))&&(isNaN(champ4))){
var totalht = parseFloat(document.getElementById("prix_libre3").value);
document.getElementById("montant_ht").value=totalht;
var totaltva = parseFloat (totalht)*(19.6/100);
document.getElementById("montant_tva").value=totaltva;
var total = parseFloat (document.getElementById("montant_ht").value)+parseFloat (document.getElementById("montant_tva").value);
document.getElementById("total_final").value = total;
}
}
</script> |
Voilà en vous remerciant d'avance.
Guy.
Partager