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
Partager