[javascript] Switch case

Fermé
benschumi - 16 janv. 2010 à 14:26
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 18 janv. 2010 à 22:44
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à..

// 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:

13 réponses

max2aa Messages postés 73 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 5 mars 2011
16 janv. 2010 à 14:28
je sais pas, j ai pas trouvé
0
Merci quand même mais ta réponse n'est pas très constructive je trouve. ^^
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 janv. 2010 à 18:23
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;
	}
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
17 janv. 2010 à 12:42
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)
0
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; }
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
17 janv. 2010 à 14:46
Si, elle les fait, mais sous forme de regex.
0
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. ^^
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
18 janv. 2010 à 08:32
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 ?
0
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
0
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
0
Désolé pour le
//si le point est à trois lettre ou quatre de la fin, tout est bon
je me suis mal exprimé mais ce message (à la base n'est lu que par moi) est pour me repérer, je l'ai mal écrit c'est vrai
//si le point est à trois caractères ou quatre de la fin, tout est bon
Là c'est mieux
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
18 janv. 2010 à 22:44
Mais ça ne change rien.
Car il y a les extensions à :
- 2 lettres : .fr, .be, .ca, .ch, ...
- 3 lettres : .com, .net, .org, .gov, .edu, ...
- 4 lettres : .info, .name, ...
0