Trois champs de formulaires liés

schninkel
Invité n'ayant pas de compte PHPfrance

01 nov. 2007, 12:17

J'ai le même type de problème (PS de Zeus : que dans le sujet suivant). Je veux additionner les champs de formulaire amount1, amount2, amount3 et verser le résultat dans total_amount.

Sur base des conseils donnés, j'ai préparé le code suivant qui ne fonctionne pas...

Qu'est-ce qui cloche ?

Code : Tout sélectionner

<head> ... <script type="text/javascript"> function somme() { var input1 = document.form1.getElementByName('amount1'); var input2 = document.form1.getElementByName('amount2'); var input3 = document.form1.getElementByName('amount3'); total_amount.value = parseInt(input1.value) + parseInt(input2.value)+ parseInt(input3.value); return total_amount; } </script> </head> <body> <input type="text" name="amount1" id="amount3" onblur="javascript:somme()"/> <input type="text" name="amount2" id="amount3" onblur="javascript:somme()"/> <input type="text" name="amount3" id="amount3" onblur="javascript:somme()"/> <input type="text" name="total_amount" id="total" /> </body>
Merci pour vos conseils...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 nov. 2007, 13:36

Modération :
schninkel, pour toute nouvelle question ouvre un nouveau sujet,
cela te permettra d'avoir plus de réponses.
Je me suis permis d'extraire ton message du post original.

En plus, tu pourras mettre [Résolu] dès que ton problème évoqué ici sera réglé.

Merci de prendre le temps de lire les règlements.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 445 Messages

01 nov. 2007, 16:26

Tu n'as pas besoin du .value aprés ton total_amount.
Puis met un var devant.

Code : Tout sélectionner

var total_amount = parseInt(input1.value) + parseInt(input2.value)+ parseInt(input3.value);

schninkel
Invité n'ayant pas de compte PHPfrance

02 nov. 2007, 14:06

J'ai effectué la correction mais n'ai toujours pas le total qui s'affiche dans le champ total_amount

Que faire d'autre ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 nov. 2007, 14:13

Le truc c'est que tu disposes du total dans une variable et tu n'en fais rien :-k
var total_amount = ....
document.getElementById('total').value = total_amount;

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

schninkel
Invité n'ayant pas de compte PHPfrance

05 nov. 2007, 09:33

Je fais ce que tu me conseilles mais ça ne marche pas mieux. Le but est d'avoir le champ d'input total qui est adapté par la valeur de la somme des trois champs 'amount'.

Ca a l'air simple mais est sans doute plu compliqué que c'en a l'air...

Quelqu'un peut-il me donner le dernier coup de pouce ?


Voici ce que j'ai :

Code : Tout sélectionner

<script type="text/javascript"> function somme() { var input1 = document.form1.getElementByName('amount1'); var input2 = document.form1.getElementByName('amount2'); var input3 = document.form1.getElementByName('amount3'); var total_amount = parseInt(input1.value) + parseInt(input2.value)+ parseInt(input3.value); document.getElementById('total').value = total_amount; } </script> </head> <body> <input type="text" name="amount1" id="amount3" onblur="javascript:somme()"/> <input type="text" name="amount2" id="amount3" onblur="javascript:somme()"/> <input type="text" name="amount3" id="amount3" onblur="javascript:somme()"/> <input type="text" name="total_amount" id="total" /> </body> </html>

d0m
Mammouth du PHP | 1141 Messages

05 nov. 2007, 09:37

y a t il des erreurs javascript? si oui lesquelles?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 nov. 2007, 11:55

Mention "javascript" innutile... onblur est déjà un événement JS :
onblur="javascript:somme()"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
AB
ViPHP | 5818 Messages

05 nov. 2007, 17:20

Puisque c'est possible je n'emploierais que la méthode getElementById en faisant ça :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <script type="text/javascript"> function somme() { var input1 = isNaN(document.getElementById('amount1').value) ? 0 : document.getElementById('amount1').value; var input2 = isNaN(document.getElementById('amount2').value) ? 0 : document.getElementById('amount2').value; var input3 = isNaN(document.getElementById('amount3').value) ? 0 : document.getElementById('amount3').value; var total_amount = Number(input1) + Number(input2) + Number(input3); //uniquement si suppression de la partie décimale total_amount = parseInt(total_amount); document.getElementById('total').value = total_amount; } </script> </head> <body> <input type="text" name="amount1" id="amount1" onBlur ="somme()" /> <input type="text" name="amount2" id="amount2" onBlur ="somme()" /> <input type="text" name="amount3" id="amount3" onBlur ="somme()" /> <input type="text" name="total_amount" id="total" /> </body> </html>

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2007, 15:14

Super, ça marche !! le problème est [Résolu].

Merci à nos cracks...