Problemes de fonction Javascript

Fermé
prout - 1 juil. 2008 à 16:57
 prout - 2 juil. 2008 à 22:28
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 !!!
A voir également:

4 réponses

flodotsoft Messages postés 70 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 juillet 2008 3
1 juil. 2008 à 17:03
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
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
flodotsoft Messages postés 70 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 juillet 2008 3
1 juil. 2008 à 18:13
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
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
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
1 juil. 2008 à 19:11
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
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
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
2 juil. 2008 à 18:28
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
Yepp Merci beaucoup !!
0