validation de formulaire - structure de code avec return
Bonjour à tous,
Voilà mon problème.
J'ai la structure de suivante :
Code:
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 soucis est le suivant :
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.
Code:
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;
}
} |
Par ailleurs voici ma fonction ValidationSaisie()
Code:
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;
}
}
} |
Si cette fonction se résume à :
Code:
1 2 3 4 5 6
|
function ValidationSaisie() {
return verifRepartitionEC();
} |
Tout baigne. Si ma somme A est différente de mon montant B, le formulaire n'est pas validé.
Maintenant si je souhaite valider que tous mes champs compte bancaires sont renseignés avec le code suivant :
Code:
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;
}
}
} |
cela ne fonctionne pas. Pour que le formulaire ne soit pas valider il faut que le premier champ soit sur select (valeur = 0)
j'ai trouvé une solution mais elle ne me convient pas.
Code:
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
}
} |
Pourquoi ?
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