pas mieux
en fait le but est de faire un controle de formulaire. Chaque champ est controlé dynamiquement par expression réguliere. Le but etant de crééer un tableau en paralelle et de lui donner en clé le nom HTML du champ et en valeur 0 si l'expression réguliere a échouée et 1 si elle a réussie.
A la fin je fais une comparaison sur le nombre total de champs textes dans le formulaire, et je le compare avec la somme du tableau paralelle, S'ils sont egaux, je peux dégriser le bouton de validation. Ca te semble clair ?
Code :
- var FieldOK = 0 ;
- var OneError = false ;
- var somme = 0 ;
- function SwitchButtonState(Btn,State)
- {
- if( State )
- {
- Btn.disabled = false ;
- Btn.className = 'button_' ;
- }
- else
- {
- Btn.disabled = true ;
- Btn.className = 'button_disabled' ;
- }
- }
- function CheckField(FieldName)
- {
- var LengthForm = GetInputBoxInto(document.forms['new_item']) ;
- CheckField = new Array() ;
- RegExToCheck = GetExpressionFor( FieldName.name ) ;
- if( !RegExToCheck.test( FieldName.value ) )
- {
- // Erreur sur les regex
- OneError = true ;
- document.getElementById( FieldName.name ).style.visibility = 'visible' ;
- CheckField[FieldName.name] = 0 ;
- }
- else
- {
- document.getElementById( FieldName.name ).style.visibility = 'hidden' ;
- CheckField[FieldName.name] = 1 ;
- }
- alert( SommeOfArray( CheckField ) + ' et ' + LengthForm ) ;
- // Si le nombre de champs OK correspond au nombre de champ a remplir on dégrise
- if( SommeOfArray( CheckField ) == NbBox )
- {
- SwitchButtonState(document.getElementById('BtnOk'),true);
- }
- else
- {
- SwitchButtonState(document.getElementById('BtnOk'),false);
- }
- }
- function GetInputBoxInto(Formulaire)
- {
- NbBox = 0 ;
- i = -1;// du premier au dernier... faire...
- while (++i < Formulaire.elements.length)
- {
- if(Formulaire.elements.item(i).type != 'button' && Formulaire.elements.item(i).type != 'submit')
- {
- NbBox++ ;
- }
- }
- return NbBox ;
- }
- function SommeOfArray(ArrayPiece)
- {
- somme = 0 ;
- for (var i = 0 ; i <= ArrayPiece.length; i++)
- {
- somme = somme + ArrayPiece[i];
- }
- return somme ;
- }
|
Message édité par the_bigboo le 30-05-2006 à 12:45:41