Page 1 sur 1

petit probleme de condition

Posté : 24 janv. 2006, 13:04
par mc
voila un petit probleme que je n'arrive pas a resoudre et qui pourtant est simple mais je suis un peu malade en ce momment et tres fatiguer...

voivi mon code
<script language="javascript" type="text/javascript"> 

function is_numeric(num)
	{
		var exp = new RegExp("^[0-9-,]*$","g");
		return exp.test(num);
	}

function validation() 
{ 
   var elem= document.forms["form1"].elements.length; 
   
   for(i=0;i<elem;i++) 
    { 
      var champ=document.forms["form1"].elements[i]; 
      if(champ.type == "text") 
      	 if(champ.value == "" ) 	
           { 
			alert ('erreur champ non saisie'); 
			champ.focus(); 
			champ.style.background = 'red'; 
			return false; 
            } 
		 if (champ.type == "text")
		   if (is_numeric(champ.value))
			{ 
				return true;
			}
			else
			{
				alert ('erreur champ non numerique');
				champ.focus(); 
				champ.style.background = 'red'; 
				return false;
			}
		}	
}
</script>    
il sert a tester des formulaire ce code est issu d'un de mes poste differents.

le probleme est le test de si la valeur numerique sa marche bien que pour la premiere variable.

en faite le cheminement est le suivant

si le champ est du type text
si la valeur est vide erreur
si elle l'est pas
si la valeur est numeirque return true
si non erreur

le probleme vient de ce qui est souligner car lorsque je retourne true sa envoie sur une autre page.

le bon cheminement serait:
si la variable n'est pas numerique erreur

mais comment le coder

voila je fait appel une fois de plus a vous je pense que si on devait etablir un classement des forum de devellopement les plus rapide et sympas vous seriez dans les premiere place si ce n'est pas 1er

merci pour votre aide

Posté : 24 janv. 2006, 17:20
par mc
bon est bien voila onn fait des compliments et on obtient plus rien lol

bon j'ai reussi a trouver tout seul comme un grand !!!

pour ceux que sa interresse je met mon script !!!
function is_numeric(num)
	{
		var exp = new RegExp("^[0-9-,]*$","i");
		var bool = exp.test(num);
		return bool;
		
	}

function validation() { 

   var elem= document.forms["form1"].elements.length; 
   for(i=0;i<elem;i++)  { 
   
      var champ=document.forms["form1"].elements[i]; 
	  
      if (champ.type == "text") {
	  
          if(champ.value == "" ) {  
            
           	alert ('veuillez entrer une heure'); 
           	champ.focus(); 
           	champ.style.background = 'red'; 
           	return false; }  
			
			if (is_numeric(champ.value)) {}
				 
			else { 	
				alert ('Champ non-numérique');
				champ.focus(); 
           		champ.style.background = 'blue'; 
				return false;  }   
				
				}  
			
	}
            
	      
	 	
	  return true;
}     
c tout con comme erreur il devait me mnquer quelque parenthese ou une connerie comme sa je peut pas dire j'ai reprit tout en entier parceque je me sui un peu enerver !!!!!

merci qd meme !!!!

Posté : 24 janv. 2006, 22:51
par Truc
bon est bien voila onn fait des compliments et on obtient plus rien lol
y en a qui bossent aussi de temps en temps :langue:
c tout con comme erreur il devait me mnquer quelque parenthese ou une connerie comme sa je peut pas dire j'ai reprit tout en entier parceque je me sui un peu enerver !!!!!
donc l'erreur venait de ce bout de code:
 if (is_numeric(champ.value))
            {
                return true;
            }
            else
            {
                alert ('erreur champ non numerique');
                champ.focus();
                champ.style.background = 'red';
                return false;
            }  
ce code se trouve dans une boucle et tu veux tester tous les champs !
Si le 1er champ testé est numérique alors tu retouirnais VRAI ce qui a pour effet de sortir de la fonction et donc ne traite pas correctement le reste du formulaire.

En ce qui concerne ta solution lle fonctionne mais n'est pas correcte ! Tu as un test sans instruction et ensuite un "else". Dans ce genre de cas on retourne la condition on verifis donc la négation ( ! ):
if (!is_numeric(champ.value)) 
{     
     alert ('Champ non-numérique');
     champ.focus();
     champ.style.background = 'blue';
     return false; 
}    
ou tu peux aussi déclarer comme tu l''as expimé:
si la variable n'est pas numerique erreur
if (is_numeric(champ.value) == False) 
:wink:

Posté : 25 janv. 2006, 09:37
par mc
merci de ces quelques precision