[javascript] Switch case
benschumi
-
avion-f16 Messages postés 20367 Statut Contributeur -
avion-f16 Messages postés 20367 Statut Contributeur -
Bonjour,
j'ai un petit soucis, j'ai un formulaire que je vérifie avec javascript et pour l'email,
il y a plein de condition mais je n'arrive pas a le faire fonctionner.
Le problème viens de ce qu'il y a après le swith ou après les cases mais j'ai du mal là..
Je réfléchis mais j'ai du mal, ça fait longtemp que j'ai pas utiliser les switch.
Merci de votre aide
j'ai un petit soucis, j'ai un formulaire que je vérifie avec javascript et pour l'email,
il y a plein de condition mais je n'arrive pas a le faire fonctionner.
Le problème viens de ce qu'il y a après le swith ou après les cases mais j'ai du mal là..
// verifie l'email
mail = document.form1.email.value
switch (mail) {
case mail == "" :
alert ('Vous avez oublié de saisir le prénom!');
return false;
break;
case strspn(mail, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_@.-") < strlen(mail):
alert ('caractères non conformes');
return false;
break;
case substr_count(mail, '@') == 0 || substr_count(mail, '@') != 1 :
alert ('@ doit être présent et seulement une fois');
return false;
break;
case((strpos(mail, "@")) == "0"):
return"@ ne peut être en début d'eMail";
break;
case(strpos(mail, "@") == (strlen(mail) - "1")):
alert ('@ ne peut être en fin d\'eMail');
return false;
break;
case(strlen(mail) < "6"):
alert ('l\'email doit faire plus de 6 caractères');
return false;
break;
case(strlen(mail) > "50"):
alert ('l\'email doit faire moins de 50 caractères');
return false;
break;
case(strspn(mail["0"], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") == "0"):
alert('le premier caractère de l\'eMail doit être une lettre');
return false;
break;
case(strspn(mail[strlen(mail)-"1"], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") == "0"):
alert('le dernier caractère de l\'eMail doit être une lettre');
return false;
break;
case(strpos(mail, "@.") != ""):
alert ('il ne doit pas y avoir de \'@.\' dans un eMail');
return false;
break;
case(strpos(mail, "..") != ""):
alert ('il ne doit pas y avoir de \'..\' dans un eMail');
return false;
break;
//si le point est à trois lettre ou quatre de la fin, tout est bon
case(mail[strlen(mail) - "3"] == "." || mail[strlen(mail) - "4"] == "."):
return true;
break;
default:
alert ('il doit y avoir 2 ou 3 lettres après le dernier point');
return false;
break;
}
Je réfléchis mais j'ai du mal, ça fait longtemp que j'ai pas utiliser les switch.
Merci de votre aide
A voir également:
- [javascript] Switch case
- Android switch - Accueil - Android
- Smart switch pc - Télécharger - Divers Bureautique
- Switch off - Télécharger - Divers Utilitaires
- Telecharger javascript - Télécharger - Langages
- Logiciel switch - Télécharger - Conversion & Extraction
13 réponses
je te propose une solution plus simple:
// verifie l'email
mail = document.form1.email.value ;
//il manquait le ; ci dessus
if(mail ==""){
alert("veuillez saisir l'adresse email ");
return false;
}
var exp=new RegExp("^[\\w\\-]+(\\.[\\w\\-]+)*@[\\w\\-]+(\\.[\\w\\-]+)*\\.[\\w\\-]{2,}$", "i");
if(mail !="" && !exp.test(mail)){
alert("Adresse email non valide ");
return false;
}
c'est vrai qu'il manquait le ; mais ça marche sans.
Le problème ne vient pas de là.
Merci pour ton aide mais je préfère garder mon script, il y a plus de vérficiation
Le problème ne vient pas de là.
Merci pour ton aide mais je préfère garder mon script, il y a plus de vérficiation
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Prends le script d'Alain, il est plus clair (quand on comprent les regex), plus court et fonctionnel.
Les vérifications sont les mêmes, ton script n'en fait pas plus (plus long ne rime pas toujours avec meilleur, mais souvent avec moins bonne optimisation)
Les vérifications sont les mêmes, ton script n'en fait pas plus (plus long ne rime pas toujours avec meilleur, mais souvent avec moins bonne optimisation)
C'est vrai qu'il est bien optimisé mais malheureusement il ne vérifie pas ça.
Et c'est essentielle.
if (strlen(mail) < 6) {
alert ('l\'email doit faire plus de 6 caractères');
return false; }
if(strpos(mail, '@') == 32) {
alert ('l\'email doit faire moins de 30 caractères');
return false; }
//si le point est à trois lettre ou quatre de la fin, tout est bon
if (mail[strlen(mail) - "3"] == "." || mail[strlen(mail) - "4"] == ".") {
return true; }
Et c'est essentielle.
if (strlen(mail) < 6) {
alert ('l\'email doit faire plus de 6 caractères');
return false; }
if(strpos(mail, '@') == 32) {
alert ('l\'email doit faire moins de 30 caractères');
return false; }
//si le point est à trois lettre ou quatre de la fin, tout est bon
if (mail[strlen(mail) - "3"] == "." || mail[strlen(mail) - "4"] == ".") {
return true; }
Ba non j'ai essayer en entrant directement sur mon site, ça les fait pas.
Et au moins j'ai un message détaillé pour chaque erreurs.
Mais c'est vrai que RegExp c'est cool, après avoir passer 10 minutes a comprendre comment il marche. ^^
Et au moins j'ai un message détaillé pour chaque erreurs.
Mais c'est vrai que RegExp c'est cool, après avoir passer 10 minutes a comprendre comment il marche. ^^
if (strlen(mail) < 6)
strpos(mail, '@') == 32
où as tu trouvé ces normes ?
//si le point est à trois lettre ou quatre de la fin, tout est bon
donc tous les .fr .be etc... ne sont pas bons ?
strpos(mail, '@') == 32
où as tu trouvé ces normes ?
//si le point est à trois lettre ou quatre de la fin, tout est bon
donc tous les .fr .be etc... ne sont pas bons ?
unexemple@hotmail.fr
Le point est le 3eme caractère en partant de la fin
unexemple@hotmail.com
Le point est le 4eme caractère en partant de la fin
Le point est le 3eme caractère en partant de la fin
unexemple@hotmail.com
Le point est le 4eme caractère en partant de la fin
je me suis trompé, c'est pas
strpos(mail, '@') == 32
mais
strpos(mail, '@') >= 32
Essaye de créer n'importe qu'elle boite mail avec moins de 6 ou plus de 30 caractères avant le @ et regardes le message d'erreur.
Nom de connexion demandé:
Exemples : JSentier, Julien.Sentier
Votre nom d'utilisateur doit comprendre entre 6 et 30 caractères.
vcsqqqqqqqqqqqqqqqqqqqqqqqwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvcxvbbbbbbbbbbbbbbdfg@gmail.com
strpos(mail, '@') == 32
mais
strpos(mail, '@') >= 32
Essaye de créer n'importe qu'elle boite mail avec moins de 6 ou plus de 30 caractères avant le @ et regardes le message d'erreur.
Nom de connexion demandé:
Exemples : JSentier, Julien.Sentier
Votre nom d'utilisateur doit comprendre entre 6 et 30 caractères.
vcsqqqqqqqqqqqqqqqqqqqqqqqwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvcxvbbbbbbbbbbbbbbdfg@gmail.com