Changement de méthode Javascript...je ne sais pas faire
6 réponses
Sam Lion
Bonsoir,
Mon problème est simple, mais pas sa solution pour moi qui ne suis pas
spécialiste javascript.
Le principe : Dans un formulaire HTML, une personne saisie un nom d'article,
un montant TTC dans un champ, la TVA dans l'autre et obtient par le
javascript le HT (hors taxes) dans un 3ème champ, grâce à un javascript tout
bête.
On a donc sur une page une ligne de formulaire unique :
Article | Montant ht | Tx_TVA | TVA
Jusque là tout va bien et cela fonctionne très bien (voir codes sources
ci-dessous). Je définie un ID pour chaque champ et je travaille avec
Mais on me demande maintenant un formulaire contenant plusieurs lignes, et
devant fonctionner sur le même système :
Je n'arrive pas à adapter mon code source pour cela. Je ne peux plus passer
par un l'ID du champ (il y aurait plusieurs fois le même). Je vais bien
changer mes balises name (name="article[]") pour traiter le formulaire après
le submit, mais en passant par le name ou par "this", je n'arrive pas à
trouver le truc !
Quelqu'un pourrait-t-il m'aider ?
Merci d'avance !!
Sam
//// code javascript tva
function calc_ht_tva()
{
var TTC = document.getElementById("TTC").value;
var TVA = document.getElementById("TVA").value;
TTC= parseFloat(TTC);
TVA= parseFloat(TVA);
// on s'occupe du HT
var HT=TTC-TVA
var HT_ARRONDI=Math.round(HT*100) / 100;
// Je renvoie une fois le HT dans le paragraphe (pour qu'il soit visible
mais non modifiable) et une fois en input hidden pour le traitement
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SAM
Le 4/1/10 6:28 PM, Sam Lion a écrit :
Bonsoir,
Mon problème est simple, mais pas sa solution pour moi qui ne suis pas spécialiste javascript.
Le principe : Dans un formulaire HTML, une personne saisie un nom d'article, un montant TTC dans un champ, la TVA dans l'autre et obtient par le javascript le HT (hors taxes) dans un 3ème champ, grâce à un javascript tout bête.
Ça m'a l'air bien laborieux : devoir "saisir" (entrer) le taux de TVA Je ne voudrais pas être celui qui aura à compléter le formulaire de x lignes
moi j'ussions proposé la tva par un select ou une série de radio-boutons le taux le + souvent utilisé étant pré-sélectionné (il y a aussi la méthode comptable : un code de tva 1, 2, 3, 4, 5)
On a donc sur une page une ligne de formulaire unique :
Article | Montant ht | Tx_TVA | TVA
Jusque là tout va bien et cela fonctionne très bien (voir codes sources ci-dessous). Je définie un ID pour chaque champ et je travaille avec
Mais on me demande maintenant un formulaire contenant plusieurs lignes, et devant fonctionner sur le même système :
Je n'arrive pas à adapter mon code source pour cela. Je ne peux plus passer par un l'ID du champ (il y aurait plusieurs fois le même).
on va donc passer par les tags (les balises), par la collection d'inputs de la ligne
on profite des calculs pour gérer le séparateur 'point' en JS et 'virgule' en français
la fonction v(x) retourne sous forme de nombre le value du champs x dont l'éventuelle ',' a été changée en '.'
-- sm
Le 4/1/10 6:28 PM, Sam Lion a écrit :
Bonsoir,
Mon problème est simple, mais pas sa solution pour moi qui ne suis pas
spécialiste javascript.
Le principe : Dans un formulaire HTML, une personne saisie un nom
d'article, un montant TTC dans un champ, la TVA dans l'autre et obtient
par le javascript le HT (hors taxes) dans un 3ème champ, grâce à un
javascript tout bête.
Ça m'a l'air bien laborieux : devoir "saisir" (entrer) le taux de TVA
Je ne voudrais pas être celui qui aura à compléter le formulaire de x lignes
moi j'ussions proposé la tva par un select ou une série de radio-boutons
le taux le + souvent utilisé étant pré-sélectionné
(il y a aussi la méthode comptable : un code de tva 1, 2, 3, 4, 5)
On a donc sur une page une ligne de formulaire unique :
Article | Montant ht | Tx_TVA | TVA
Jusque là tout va bien et cela fonctionne très bien (voir codes sources
ci-dessous). Je définie un ID pour chaque champ et je travaille avec
Mais on me demande maintenant un formulaire contenant plusieurs lignes,
et devant fonctionner sur le même système :
Mon problème est simple, mais pas sa solution pour moi qui ne suis pas spécialiste javascript.
Le principe : Dans un formulaire HTML, une personne saisie un nom d'article, un montant TTC dans un champ, la TVA dans l'autre et obtient par le javascript le HT (hors taxes) dans un 3ème champ, grâce à un javascript tout bête.
Ça m'a l'air bien laborieux : devoir "saisir" (entrer) le taux de TVA Je ne voudrais pas être celui qui aura à compléter le formulaire de x lignes
moi j'ussions proposé la tva par un select ou une série de radio-boutons le taux le + souvent utilisé étant pré-sélectionné (il y a aussi la méthode comptable : un code de tva 1, 2, 3, 4, 5)
On a donc sur une page une ligne de formulaire unique :
Article | Montant ht | Tx_TVA | TVA
Jusque là tout va bien et cela fonctionne très bien (voir codes sources ci-dessous). Je définie un ID pour chaque champ et je travaille avec
Mais on me demande maintenant un formulaire contenant plusieurs lignes, et devant fonctionner sur le même système :
Je n'arrive pas à adapter mon code source pour cela. Je ne peux plus passer par un l'ID du champ (il y aurait plusieurs fois le même).
on va donc passer par les tags (les balises), par la collection d'inputs de la ligne
on profite des calculs pour gérer le séparateur 'point' en JS et 'virgule' en français
la fonction v(x) retourne sous forme de nombre le value du champs x dont l'éventuelle ',' a été changée en '.'
-- sm
Yves Le Dain
Merci beaucoup ! il fallait penser à placer le OnKeyUp sur une balise <p> Sympa d'avoir passé du temps à améliorer le code.
J'ai essayé d'ajouter le select pour la TVA comme le disait votre message (d'ailleurs j'ai bien un select sur mon ancienne version :-) ), et comme je place un input par colonne dans un tableau, j'ai modifié le code pour placer le OnKeyUp sur la balise <tr>
Voir code ci-dessous
Mais voici mon nouveau problème : j'ai donc ajouté un "onchange" pour gérer quand on modifie le select, mais ce onchange dans le <tr> ne réagit pas ??!! (il réagissait dans mon ancienne version, placé directement sans le select)
Merci beaucoup ! il fallait penser à placer le OnKeyUp sur une balise
<p>
Sympa d'avoir passé du temps à améliorer le code.
J'ai essayé d'ajouter le select pour la TVA comme le disait votre
message (d'ailleurs j'ai bien un select sur mon ancienne
version :-) ), et comme je place un input par colonne dans un tableau,
j'ai modifié le code pour placer le OnKeyUp sur la balise <tr>
Voir code ci-dessous
Mais voici mon nouveau problème : j'ai donc ajouté un "onchange" pour
gérer quand on modifie le select, mais ce onchange dans le <tr> ne
réagit pas ??!! (il réagissait dans mon ancienne version, placé
directement sans le select)
Merci beaucoup ! il fallait penser à placer le OnKeyUp sur une balise <p> Sympa d'avoir passé du temps à améliorer le code.
J'ai essayé d'ajouter le select pour la TVA comme le disait votre message (d'ailleurs j'ai bien un select sur mon ancienne version :-) ), et comme je place un input par colonne dans un tableau, j'ai modifié le code pour placer le OnKeyUp sur la balise <tr>
Voir code ci-dessous
Mais voici mon nouveau problème : j'ai donc ajouté un "onchange" pour gérer quand on modifie le select, mais ce onchange dans le <tr> ne réagit pas ??!! (il réagissait dans mon ancienne version, placé directement sans le select)
Merci beaucoup ! il fallait penser à placer le OnKeyUp sur une balise <p> Sympa d'avoir passé du temps à améliorer le code.
J'ai essayé d'ajouter le select pour la TVA comme le disait votre message (d'ailleurs j'ai bien un select sur mon ancienne version :-) ), et comme je place un input par colonne dans un tableau, j'ai modifié le code pour placer le OnKeyUp sur la balise <tr>
Bon, avant de se battre avec le TR voici, avzc un select : <http://cjoint.com/?ecqmDWlClH> une seule ligne (qui est un clone d'une autre cachée) et on rajoute une nvelle ligne pour chaque autre article
Bon, avec les tables ça va être un peu + compliqué ... :-(
Mais voici mon nouveau problème : j'ai donc ajouté un "onchange" pour gérer quand on modifie le select,
ça se place donc dans le select
mais ce onchange dans le <tr> ne réagit pas ??!!
Ie TR ne peu pas connaitre le onchange ce n'est pas un élément de formulaire, ça n'a pas vocation à pouvoir changer
(il réagissait dans mon ancienne version, placé directement sans le select)
Encore lié à mon incompétence en javascript ?
Les essais et erreurs y a qu'ça d'vrai ;-)
-- sm
Le 4/2/10 12:44 PM, Yves Le Dain a écrit :
Merci beaucoup ! il fallait penser à placer le OnKeyUp sur une balise
<p>
Sympa d'avoir passé du temps à améliorer le code.
J'ai essayé d'ajouter le select pour la TVA comme le disait votre
message (d'ailleurs j'ai bien un select sur mon ancienne
version :-) ), et comme je place un input par colonne dans un tableau,
j'ai modifié le code pour placer le OnKeyUp sur la balise <tr>
Bon, avant de se battre avec le TR
voici, avzc un select :
<http://cjoint.com/?ecqmDWlClH>
une seule ligne (qui est un clone d'une autre cachée)
et on rajoute une nvelle ligne pour chaque autre article
Bon, avec les tables ça va être un peu + compliqué ... :-(
Mais voici mon nouveau problème : j'ai donc ajouté un "onchange" pour
gérer quand on modifie le select,
ça se place donc dans le select
mais ce onchange dans le <tr> ne réagit pas ??!!
Ie TR ne peu pas connaitre le onchange
ce n'est pas un élément de formulaire, ça n'a pas vocation à pouvoir changer
(il réagissait dans mon ancienne version, placé
directement sans le select)
Merci beaucoup ! il fallait penser à placer le OnKeyUp sur une balise <p> Sympa d'avoir passé du temps à améliorer le code.
J'ai essayé d'ajouter le select pour la TVA comme le disait votre message (d'ailleurs j'ai bien un select sur mon ancienne version :-) ), et comme je place un input par colonne dans un tableau, j'ai modifié le code pour placer le OnKeyUp sur la balise <tr>
Bon, avant de se battre avec le TR voici, avzc un select : <http://cjoint.com/?ecqmDWlClH> une seule ligne (qui est un clone d'une autre cachée) et on rajoute une nvelle ligne pour chaque autre article
Bon, avec les tables ça va être un peu + compliqué ... :-(
Mais voici mon nouveau problème : j'ai donc ajouté un "onchange" pour gérer quand on modifie le select,
ça se place donc dans le select
mais ce onchange dans le <tr> ne réagit pas ??!!
Ie TR ne peu pas connaitre le onchange ce n'est pas un élément de formulaire, ça n'a pas vocation à pouvoir changer
(il réagissait dans mon ancienne version, placé directement sans le select)
Encore lié à mon incompétence en javascript ?
Les essais et erreurs y a qu'ça d'vrai ;-)
-- sm
Yves Le Dain
A nouveau un grand merci ! La résolution de mon problème + une petite manipulation très efficace du DOM, c'est super sympa... Bon, j'essaye de me débrouiller comme un grand pour la suite. Sam
A nouveau un grand merci !
La résolution de mon problème + une petite manipulation très efficace
du DOM, c'est super sympa...
Bon, j'essaye de me débrouiller comme un grand pour la suite.
Sam
A nouveau un grand merci ! La résolution de mon problème + une petite manipulation très efficace du DOM, c'est super sympa... Bon, j'essaye de me débrouiller comme un grand pour la suite. Sam
Mickaël Wolff
Sam Lion a écrit :
var TTC = document.getElementById("TTC").value; var TVA = document.getElementById("TVA").value; TTC= parseFloat(TTC); TVA= parseFloat(TVA);
// on s'occupe du HT
var HT=TTC-TVA var HT_ARRONDI=Math.round(HT*100) / 100;
N'oublie pas que le montant obtenu est indicatif. En effet, les float ne sont pas des nombres décimaux exacts. Tes calculs peuvent être faux. En JS, il est impossible d'en faire des calculs exacts. De plus, le calcul de la TVA est soumise à des contraintes légales.
var TTC = document.getElementById("TTC").value;
var TVA = document.getElementById("TVA").value;
TTC= parseFloat(TTC);
TVA= parseFloat(TVA);
// on s'occupe du HT
var HT=TTC-TVA
var HT_ARRONDI=Math.round(HT*100) / 100;
N'oublie pas que le montant obtenu est indicatif. En effet, les float
ne sont pas des nombres décimaux exacts. Tes calculs peuvent être faux.
En JS, il est impossible d'en faire des calculs exacts. De plus, le
calcul de la TVA est soumise à des contraintes légales.
var TTC = document.getElementById("TTC").value; var TVA = document.getElementById("TVA").value; TTC= parseFloat(TTC); TVA= parseFloat(TVA);
// on s'occupe du HT
var HT=TTC-TVA var HT_ARRONDI=Math.round(HT*100) / 100;
N'oublie pas que le montant obtenu est indicatif. En effet, les float ne sont pas des nombres décimaux exacts. Tes calculs peuvent être faux. En JS, il est impossible d'en faire des calculs exacts. De plus, le calcul de la TVA est soumise à des contraintes légales.
"Mickaël Wolff" a écrit dans le message de groupe de discussion : 4bb959bd$0$4591$
Sam Lion a écrit :
var TTC = document.getElementById("TTC").value; var TVA = document.getElementById("TVA").value; TTC= parseFloat(TTC); TVA= parseFloat(TVA);
// on s'occupe du HT
var HT=TTC-TVA var HT_ARRONDI=Math.round(HT*100) / 100;
N'oublie pas que le montant obtenu est indicatif. En effet, les float ne sont pas des nombres décimaux exacts. Tes calculs peuvent être faux. En JS, il est impossible d'en faire des calculs exacts.
Merci pour cette précision je vais en tirer les conséquences...
Sam
"Mickaël Wolff" <mickael.wolff@laposte.net> a écrit dans le message de
groupe de discussion : 4bb959bd$0$4591$426a34cc@news.free.fr...
Sam Lion a écrit :
var TTC = document.getElementById("TTC").value;
var TVA = document.getElementById("TVA").value;
TTC= parseFloat(TTC);
TVA= parseFloat(TVA);
// on s'occupe du HT
var HT=TTC-TVA
var HT_ARRONDI=Math.round(HT*100) / 100;
N'oublie pas que le montant obtenu est indicatif. En effet, les float ne
sont pas des nombres décimaux exacts. Tes calculs peuvent être faux. En
JS, il est impossible d'en faire des calculs exacts.
Merci pour cette précision je vais en tirer les conséquences...
"Mickaël Wolff" a écrit dans le message de groupe de discussion : 4bb959bd$0$4591$
Sam Lion a écrit :
var TTC = document.getElementById("TTC").value; var TVA = document.getElementById("TVA").value; TTC= parseFloat(TTC); TVA= parseFloat(TVA);
// on s'occupe du HT
var HT=TTC-TVA var HT_ARRONDI=Math.round(HT*100) / 100;
N'oublie pas que le montant obtenu est indicatif. En effet, les float ne sont pas des nombres décimaux exacts. Tes calculs peuvent être faux. En JS, il est impossible d'en faire des calculs exacts.
Merci pour cette précision je vais en tirer les conséquences...