Bonjour à tous,
Voilà mon problème.
J'ai la structure de suivante :
Mon soucis est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <script type="text/javascript"> <!-- code js //--> </script> <form class="formulaire_resa" name="reservation" id="reservation" METHOD='POST' ACTION="<? echo 'Reservation.php' ; ?> " onsubmit="return ValidationSaisie()"> code php/html pour le formulaire </form>
Mon formulaire est constitué d'un tableau dont le nombre de lignes est variable et donc par conséquent le nombre de champs à vérifier.
Pour simplifier disons que ce tableau a 3 colonnes : date, montant et compte_bancaire.
les champs dates et montant sont matérialisés par un champ texte, et les champs relatifs au compte_bancaire par une liste déroulante.
Je dois vérifier que :
La somme des montants (A) est égal à un montant B.
Les champs compte_bancaire ne peuvent pas avoir la valeur select c'est à dire la valeur 0.
Je ne vois pas comment implémenter ma fonction ValidationSaisie() sachant que :
j'ai déjà une fonction verifRepartitionEC() qui vérifie que la somme de mes montant (A) est bien égal à un un montant B . Si non, elle met en rouge le monant B. Cette fonction parcoure le tableau d'où l'utilisation d'une boucle.
Par ailleurs voici ma fonction ValidationSaisie()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function verifRepartitionEC(){ var somme_echeance_client =0; for (k=1; k< nbLignesEcheanceClient+1; k++) { var temp1=document.getElementById("montant_ec"+k).value; temp1 = temp1.deformatage_nombre(); if(!isNaN(temp1) && (temp1!="")) somme_echeance_client = somme_echeance_client + parseFloat(temp1); } if (somme_echeance_client != montant_total) { document.getElementById("Total_Echeance_Client").className='total_input_erreur_rouge'; return false; } else { document.getElementById("Total_Echeance_Client").className='total_input_bleufonce'; return true; } }
Si cette fonction se résume à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 function ValidationSaisie() { frm=document.forms['reservation']; //verifRepartitionEC(); for (k=1; k< nbLignesEcheanceClient+1; k++) { var valeur_compte=document.getElementById("compte_bancaire_paiement_client"+k); if (valeur_compte.value =='0') { //frm.elements['devise_locale'].style.backgroundColor='#FFCC66'; return false; exit; } else { return true; } } }
Tout baigne. Si ma somme A est différente de mon montant B, le formulaire n'est pas validé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function ValidationSaisie() { return verifRepartitionEC(); }
Maintenant si je souhaite valider que tous mes champs compte bancaires sont renseignés avec le code suivant :
cela ne fonctionne pas. Pour que le formulaire ne soit pas valider il faut que le premier champ soit sur select (valeur = 0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function ValidationSaisie() { for (k=1; k< nbLignesEcheanceClient+1; k++) { var valeur_compte=document.getElementById("compte_bancaire_paiement_client"+k); if (valeur_compte.value =='0') { return false; } else { return true; } } }
j'ai trouvé une solution mais elle ne me convient pas.
Pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 function ValidationSaisie() { var somme_erreur =''; // Validation total écheance var somme_echeance_client =0; for (k=1; k< nbLignesEcheanceClient+1; k++) { var temp1=document.getElementById("montant_ec"+k).value; temp1 = temp1.deformatage_nombre(); if(!isNaN(temp1) && (temp1!="")) somme_echeance_client = somme_echeance_client + parseFloat(temp1); } if (somme_echeance_client != montant_total) { somme_erreur ='divergence_echeance'; } // Validation de saise des comptes bancaires for (k=1; k< nbLignesEcheanceClient+1; k++) { var valeur_compte=document.getElementById("compte_bancaire_paiement_client"+k); if (valeur_compte.value =='0') { //frm.elements['devise_locale'].style.backgroundColor='#FFCC66'; somme_erreur = somme_erreur + 'erreur'; } } if (somme_erreur != '') { return false } }
Cette fonction reprend une partie de code déjà existant par ailleurs.
En espérant d'abord avoir exprimer correctement cette problématique, votre aide me sera précieuse.
par avance merci







Répondre avec citation
Partager