Problemes de fonction Javascript

prout -  
 prout -
Bonjour à tous,
J'ai développé un formulaire pour lequel je voudrais faire un contrôle de saisie en javascript pour pouvoir contrôler certains champs qui doivent être des chiffres..(+40 champs) Voila le bout de code sur lequel je m' arrache les cheveux.

function validation()
{
test();

if(document.principal.TotoExploit.value == "")
{
alert ('erreur');
document.principal.TotoExploit.focus();
return false;
}

//vérifie que c'est bien des chiffres
Chiffre(TotoExploit);
else
{
return true;
}
}

function test()
{
alert ('La fonction est appele');
}

function Chiffre(NomVariable)
{
var entier = document.principal.(NomVariable).value
if((isNaN(entier))==true)
{
alert ('Le champs ne doit comporter que des chiffres');
document.principal.(NomVariable).focus();
return false;
}

}

Résultat : la fonction test s'affiche normalement parcontre la fonction chiffre......

Quelqu’un a-t-il une idée ?

La fonction validation est exécuté par le <form> du formulaire
<form method = "post" action="TraitementDiagnostic.php" name="principal" onsubmit="return validation();" >

Merci !!!
Configuration: Windows XP
Firefox 2.0.0.14

4 réponses

  1. flodotsoft Messages postés 71 Statut Membre 3
     
    Salut,

    je ne comprends pas bien le "else" en dessous de l'appel à ta fonction chiffre.
    je pense qu'il te suffit de l'enlever, ainsi que l'acolade en dessous du return true.

    ++
    0
    1. prout
       
      Lut
      Merci de ton attention !!
      j'ai testé et nan toujours pas de message d'alert
      la deuxième accolade en dessous de return true est l'accolade fermante de la fonction validation().
      0
  2. flodotsoft Messages postés 71 Statut Membre 3
     
    tu as 2 accolades en dessous, donc une de trop et le ELSE qui ne correspond à aucun IF.

    essais ca :

    function validation(){
    test();
    if(document.principal.TotoExploit.value == ""){
    alert ('erreur');
    document.principal.TotoExploit.focus();
    return false;
    }

    //vérifie que c'est bien des chiffres
    if(Chiffre(TotoExploit))
    return true;
    else
    return false;
    }

    ou ca :

    function validation(){
    test();
    if(document.principal.TotoExploit.value == ""){
    alert ('erreur');
    document.principal.TotoExploit.focus();
    return false;
    }else{
    //vérifie que c'est bien des chiffres
    if(Chiffre(TotoExploit))
    return true;
    else
    return false;
    }
    0
    1. prout
       
      Re, Si le champs est vide l'erreur est bien détectée....Par contre je peux toujours rentrer des caractéres à la place des chiffres ...Probleme de fonction surement.
      Pourtant Si je rentre dans la fonction validation() directement

      //vérifie que c'est bien des chiffres

      var entier = document.principal.TotoExploit.value
      if((isNaN(entier))==true)

      {
      alert ('Le champs ne doit comporter que des chiffres');
      document.principal.TotoExploit.focus();
      return false;
      }

      Là, aucun soucis j'ai bien le message d'erreur
      0
  3. macgawel Messages postés 676 Statut Membre 89
     
    Bonsoir.

    function Chiffre(NomVariable)
    {
    var entier = document.principal.(NomVariable).value
    if((isNaN(entier))==true)
    {
    alert ('Le champs ne doit comporter que des chiffres');
    document.principal.(NomVariable).focus();
    return false;
    } 

    Perso, j'aurais plutôt tendance à utiliser la fonction document.getElementById() (penser à bien spécifier id= dans le HTML) :
    function Chiffre(NomVariable)
    {
    var entier = document.getElementById(NomVariable).value
    if((isNaN(entier))==true)
    {
    alert ('Le champs ne doit comporter que des chiffres');
    document.getElementById.(NomVariable).focus();
    return false;
    } 
    0
    1. prout
       
      J ai contourné le probleme mais si quelqu' un peut me proposer mieux car je n'y gagne rien
      autant que j'enlève la fonction si je dois faire ca pour les 40 variables ...


      function Chiffre(entier)
      {
      			if((isNaN(entier))==true)
      			{     
      			alert ('Le champs ne  doit comporter que des chiffres');  
      			return false;
      			}				
      }
      


      function validation()
      {
      			var entier = document.principal.TotoExploit.value
      			if(Chiffre(entier) ==false)
      			{
      			document.principal.TotoExploit.focus();
      			return false;
      			}						
      }
      
      
      0
  4. macgawel Messages postés 676 Statut Membre 89
     
    Re.
    Déclare une classe particulière pour les champs qui doivent être des chiffres :
    <input type="texte" class="chiffre" ... />

    Et dans ta fonction Validation, parcours ton html pour scanner tous les INPUT.
    Dans ces INPUT, tu regards ceux appartenant à cette classe, et tu effectue le test.
    Un exemple simple qui renvoie une alerte avec les input mal remplis :
    function Validation() {
    	erreur = "";
    	for (i=0; i < document.getElementsByTagName("input").length; i++) {
    	  if ((document.getElementsByTagName("input")[i].className == "chiffre") && (isNaN(document.getElementsByTagName("input")[i].value)))  {
    	      erreur = erreur + document.getElementsByTagName("input")[i].name + "\n";
    	  }
    	}
    	if (erreur != "") {
    		alert(erreur);
    	}
    }
    0
    1. prout
       
      Yepp Merci beaucoup !!
      0