Javascript:Pb de gestion d'erreur en javascript

Javascript:Pb de gestion d'erreur en javascript - HTML/CSS - Programmation

Marsh Posté le 29-11-2007 à 11:02:09    

Bonjour.
Voilà mon problème.
Je dois gérer des erreurs coté clients donc en javascript.Quand je teste avec tous les champs vides, ca marche tré bien, c'est à dire qu'il m'affiche dans des boites de dialogues les erreurs.
Mais j'ai 5 champs de saisies et dés que je renseigne un champ de sasise, il ne passe pas au champ suivant qui lui est vide.
Exemple:Mon premier champ est Nom, je saisie mon nom mais il ne passe pas au prochain champ qui est vide.
Autre exemple:Cette fois-ci je renseigne mon quatième champ:il m'affiche bien les erreurs pour les 3 premiers champs vides, mais ne passe pas au 5ème champs.
Voici le code qui gére les erreurs:
 

Code :
  1. function soumettre()
  2. {
  3. //gére les erreurs coté clients
  4. if (document.formulaire.Nom.value<1)
  5. {
  6.  alert("Vous devez renseigner le champ nom" );
  7.  if (document.formulaire.Adresse.value<1)
  8.  {
  9.   alert("Vous devez renseigner le champs adresse" );
  10.   if(document.formulaire.email.value<1)
  11.   {
  12.    alert("Vous devez renseigner le champ E-mail" );
  13.    if(document.formulaire.refcom.value<1)
  14.    {
  15.     alert("Vous devez renseigner le champ férérence de la commande" );
  16.     if(document.formulaire.montant.value<1)
  17.     {
  18.      alert("Vous devez indiquer le montant pour la facturation" );
  19.      return false;
  20.     }
  21.     else
  22.     {
  23.      document.write("Merci d'avoir choisi colibri" );
  24.      document.close;
  25.      return true;
  26.     }
  27.     return false;
  28.    }
  29.    else
  30.    {
  31.     document.write("merci d'avoir choisi colibri" );
  32.     return true;
  33.    }
  34.    return false;
  35.   }
  36.   else
  37.   {
  38.    document.write("Merci d'avoir choisi colibri" );
  39.    document.close();
  40.    return true;
  41.   }
  42.   return false;
  43.  }
  44.  else
  45.  {
  46.   document.write("Merci d'avoir choisi colibri" );
  47.   document.close();
  48.   return true;
  49.  }
  50.  return false;
  51. }


 
Merci d'avance de vos réponse.

Reply

Marsh Posté le 29-11-2007 à 11:02:09   

Reply

Marsh Posté le 29-11-2007 à 11:25:16    

Ton analyse me semble ... douteuse ;) :D

 

Avec tes if imbriqués ca peut pas marcher comme tu le penses.
Essaye ca et tiens moi au courant des éventuels soucis :

Code :
  1. function soumettre()
  2. {
  3. var form = document.formulaire;
  4. var isOK = true;
  5. if (form.Nom.value.length < 1)
  6. {
  7.  alert ("Vous devez renseigner le champ nom !" );
  8.  isOK = false;
  9. }
  10. if (form.Adresse.value.length < 1)
  11. {
  12.  alert ("Vous devez renseigner le champs adresse !" );
  13.  isOK = false;
  14. }
  15. if (form.email.value.length < 1)
  16. {
  17.  alert ("Vous devez renseigner le champ E-mail !" );
  18.  isOK = false;
  19. }
  20. if (form.refcom.value.length < 1)
  21. {
  22.                 alert ("Vous devez renseigner le champ férérence de la commande" );
  23.  isOK = false;
  24. }
  25. if (form.montant.value.length < 1)
  26. {
  27.  alert ("Vous devez indiquer le montant pour la facturation" );
  28.  isOK = false;
  29. }
  30. if (isOK)
  31. {
  32.  document.write("Merci d'avoir choisi colibri" );
  33.  document.close;
  34.  return true;
  35. }
  36.    return false;
  37. }


Message édité par SICKofitALL le 29-11-2007 à 11:38:08

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 29-11-2007 à 11:31:33    

port'nawak [:cupra]
Si tu rencontres deux erreurs, ton isOk est setté à true et il n'y a plus de message d'erreurs.

Reply

Marsh Posté le 29-11-2007 à 11:36:14    

bah non :D

 

EDIT:
ah si pardon :o
double ! => caÿmal :pfff:

 

EDIT2:
tain relou ces espaces :fou:

 

EDIT3:
d'ailleurs si on voudrait tester mieux que ca les champs il faudrait trimer le contenu et tester une longueur vide ...

Code :
  1. ...
  2. String.prototype.trim = function ()
  3.  {
  4.   return (this.replace (/^\s+/, '').replace (/\s+$/, ''));
  5.  }
  6. ...
  7. function soumettre ()
  8. {
  9. var form = document.formulaire;
  10. var isOK = true;
  11. if (form.Nom.value.trim ().length == 0)
  12. {
  13.  alert ("Vous devez renseigner le champ nom !" );
  14.  isOK = !isOK;
  15. }
  16. .....
  17. .....
 


etc ...

Message cité 1 fois
Message édité par SICKofitALL le 29-11-2007 à 11:40:50

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 29-11-2007 à 11:42:09    

Merci SICKofitALL.j'ai compris ce que j'ai fait comme erreur.
Dés que tu met un return=true ca t'arrête la vérification.
Ca y'ai ca marche
Merci beaucoup
+

Reply

Marsh Posté le 29-11-2007 à 12:49:36    

SICKofitALL a écrit :

bah non :D
 
EDIT:
ah si pardon :o
double ! => caÿmal :pfff:
 
EDIT2:
tain relou ces espaces :fou:
 
EDIT3:
d'ailleurs si on voudrait tester mieux que ca les champs il faudrait trimer le contenu et tester une longueur vide ...

Code :
  1. ...
  2. String.prototype.trim = function ()
  3.  {
  4.   return (this.replace (/^\s+/, '').replace (/\s+$/, ''));
  5.  }
  6. ...
  7. function soumettre ()
  8. {
  9. var form = document.formulaire;
  10. var isOK = true;
  11. if (form.Nom.value.trim ().length == 0)
  12. {
  13.  alert ("Vous devez renseigner le champ nom !" );
  14.  isOK = !isOK;
  15. }
  16. .....
  17. .....


 
 
etc ...


ca s optimise encore ca :o
tu demandes a ton script de chercher lui meme les inputs du formulaire
tu boucles sur le tableau retourné et ca t evite de faire/ecrire 20 fois les memes operations


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 29-11-2007 à 12:59:01    

>mIRROR
on est bien d'accord, mais il s'agit juste d'une "v2" du code cité :)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 29-11-2007 à 13:41:56    

j ai vu je t aidais juste pour la v3 :o


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 30-11-2007 à 07:23:03    

mIRROR a écrit :

j ai vu je t aidais juste pour la v3 :o


tu voudrais pas coder la V2 de formval  :p ?

Reply

Marsh Posté le 30-11-2007 à 10:14:03    

gatsu35 a écrit :


tu voudrais pas coder la V2 de formval  :p ?


ouais il faut defruiter ce code de qualité roumaine :o


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 30-11-2007 à 10:14:03   

Reply

Marsh Posté le 03-12-2007 à 09:43:15    

Cette fois ci je veux gérer d'autres erreurs tel que vérifier un champ numérique en javascript.
Voilà mon code que j'ai mis et qui devrait pourtant marcher
 
while(IsNumeric(form.montant.value)==false)
 {
 alert("Le champ Montant est numérique" );
 form.montant.focus
 }
En algorithme ca se traduit comme ca et je ne comprend pas pourquoi ca ne marche pas.
Si quelqu'un peut m'aider car là je patauge dans la semoule.

Reply

Marsh Posté le 03-12-2007 à 10:38:45    

IsNumeric ? c pas natif comme fonction ca ?
 
Pour ton WHILE je sais pas pourquoi tu fais ca, tu devrais plutot faire un IF déclenché par un onBlur
 
sinon, avec ton code actuel, essaye ca :

Code :
  1. while (isNaN (form.montant.value))
  2. {
  3.   alert ("champ pas numérique !" );
  4.   form.montant.focus ();
  5. }


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 03-12-2007 à 10:39:34    

un while [:johneh]
un if suffira hein sinon tu pars dans une vieille boucle infinie et ton script plante [:osweat]
et le truc que tu veux ecrire c est

 


Code :
  1. if(isNaN(parseInt(form.montant.value)))
  2. {
  3. alert("Le champ Montant est numérique" );
  4. form.montant.focus
  5. }
 

mais les alert stune plaie

 

edit: [:benou_grilled]
et en fait ouais le parseInt est dispensable :P


Message édité par mIRROR le 03-12-2007 à 10:41:03

---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 03-12-2007 à 10:50:52    

Merci ca marche.Mais pour vérifier qu'un champ soit numérique on m'a toujours appris avec un while et non un if.
Pour parseInt c'est pour convertir ton champ en entier non?

Reply

Marsh Posté le 03-12-2007 à 10:58:42    

dante76 a écrit :

Merci ca marche.Mais pour vérifier qu'un champ soit numérique on m'a toujours appris avec un while et non un if.
Pour parseInt c'est pour convertir ton champ en entier non?

 

un while ou un if n'a pas de rapport à ma connaissance avec le test d'un type de données ou pas, il s'agit plutot d'utiliser la structure la plus approprié ;)
Et ici c'est pas le cas

 

Le parseInt permet de convertir une variable (ou une valeur) en entier (et dans la base numérique de ton choix d'ailleurs). Si il n'y arrive pas, il te renvoit NaN (Not a Number).
isNaN permet de vérifier que la valeur testée ne soit PAS un nombre

 

Sinon oui, les alert sont relous car ils agacent en général l'utilisateur, mais pour le debugage tu peux ;)


Message édité par SICKofitALL le 03-12-2007 à 10:59:34

---------------
We deserve everything that's coming...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed