11521 sujets

JavaScript, DOM et API Web HTML5

Bonjours à tous !

J'ai un exercice affaire qui consiste à contrôler la présence d’une arobase dans un champ de formulaire et afficher un message d’avertissement ou de conformité en fonction du résultat.

Le problème est que à chaque fois le script me retourne que Le champ e-mail ne comporte pas d'arobase alors qu'il y en a bien une si vous pouvez m'expliquer s’il vous plaît merci d'avance.

function controlmail() {

var email=document.form1.monmail.value;
var resultat=email.search("@");
if (resultat!=false) {
alert(" Le champ e-mail ne comporte pas d'arobase ");
}
else {
alert(" Merci votre adress e-mail comporte une arobase ");
}

}


<form action="" name="form1" method="post">
<p>&nbsp;</p>
<table>
<tr>
<td>E-mail</td>
<td><input type="text" name="monmail" id="monmail" value=" Veillez saisir votre e-mail ">
</td>
</tr>
</table>
<p><input type="button" name="Submit" value="Controler" onClick="controlmail()" ></p>
</form>
Salut Smiley smile

Je ne suis pas assez expert pour comprendre la logique de ton script, mais j'ai l'impression qu'il y a une erreur de syntaxe:

var email=document.form1.monmail.value;
Il manque ()
je crois qu'il faut écrire comme ceci :

var email=document.form1.monmail.value();

Mais si ça tombe ça ne veut rien dire Smiley smile

Je confirme ça ne veut rien dire Smiley smile je viens d'aller voir les syntaxes, j'ai parlé un peu trop vite... Je passe, je me documente quand même, mais je passe Smiley smile
Modifié par Ethos (28 Jan 2017 - 10:41)
J'essaie de résoudre le problème j'ai lu mon code plusieurs fois mais je ne vois pas pourquoi le script ne voit pas qu'il y a bien une arobase dans le search()

Je ne comprends pas
ta fonction ne va pas, essaye ceci et ça marchera

search() renvoie la première position de la chaine testée et non pas une valeur boooléenne, et -1 correspond à aucune occurrence trouvée



<script>
	function controlmail() {

		var email=document.form1.monmail.value;

		var resultat = email.search("@");  
		

		if (resultat == -1) {
			alert(" Le champ e-mail ne comporte pas d'arobase ");
		}
		else {
			alert(" Merci votre adress e-mail comporte une arobase ");
		}

	}	
</script>	


Modifié par lionel_css3 (28 Jan 2017 - 11:25)
d'autre part dans ton formulaire, privilégie l'attribut 'placeholder' pour donner des suggestions de saisie..


<td><input type="text" name="monmail" id="monmail" value"" placeholder=" Veillez saisir votre e-mail ">

Merci infiniment pour l'explication et pour tes conseils j'ai beaucoup appris, c'est très sympas de ta part merci encore une fois.

Si non j'ai tester le script et sa marche à la perfection.

Merci.
salut,
personnellement je conseillerais d'utiliser la méthode indexOf pour une recherche aussi simple.
La méthode search se base sur une expression rationnelle et est donc plus lente.

Il faut aussi faire attention avec ce genre de condition

resultat != false

Si la méthode trouve une correspondance à l'index 0, ta condition ne sera donc pas vérifiée.
Là en l'occurrence la méthode retourne -1 dans le cas où aucune correspondance n'est trouvée mais pour d'autres méthodes qui pourraient retourner false, il faut faire une comparaison stricte de valeurs

resultat !== false
DiegoGaby a écrit :
Merci infiniment pour l'explication et pour tes conseils j'ai beaucoup appris, c'est très sympas de ta part merci encore une fois.

Si non j'ai tester le script et sa marche à la perfection.

Merci.


et finalement, comme le dit le proverbe "il vaut mieux apprendre à pécher à un indien que de lui donner un poisson" tu peux faire un console.log() , ou un alert() de la valeur de ta variable resultat et tu aurais vérifié que ce n'était pas une valeur booléenne et cela t'aide à debugguer ton code, c'est en fait ce que j'ai fait Smiley cligne
lionel_css3 a écrit :


"il vaut mieux apprendre à pécher à un indien que de lui donner un poisson"


hors sujet, mais je l'aurais plutôt vu comme ça le proverbe "il vaut mieux demander à un indien de nous apprendre à pêcher que lui piquer son poisson"...