Problème de validation formulaire javascript

Fermé
xav - 11 janv. 2010 à 17:20
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 - 14 janv. 2010 à 04:56
Bonjour,

j'ai un formulaire à valider mais impossible rien ne fonctionne.

<script type="text/javascript">
function isEmail(emailStr){
var checkTLD = 1;
var knownDomsPat = "/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|­pro|museum|fr)$/";
var emailPat = "/^(.+)@(.+)$/";
var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars = "\[^\\s" + specialChars + "\]";
var quotedUser = "(\"[^\"]*\")";
var ipDomainPat = "/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/";
var atom = validChars + '+';
var word = "(" + atom + "|" + quotedUser + ")";
var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray = emailStr.match(emailPat);
if (matchArray == null) { return false; }
var user = matchArray[1];
var domain = matchArray[2];
for (i=0; i < user.length; i++) {
if (user.charCodeAt(i) > 127) { return false; }
}
for (i=0; i < domain.length; i++) {
if (domain.charCodeAt(i) > 127) { return false; }
}
if (user.match(userPat) == null) { return false; }
var IPArray=domain.match(ipDomainPat);
if (IPArray != null) {
for (var i=1; i<=4; i++) {
if (IPArray[i] > 255) { return false; }
}
return true;
}
var atomPat = new RegExp("^" + atom + "$");
var domArr = domain.split(".");
var len = domArr.length;
for (i=0; i < len; i++) {
if (domArr[i].search(atomPat) == -1) { return false; }
}
if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) { return false; }
if (len < 2) { return false; }
return true;
}

function valider(){
erreurs = "";
valide = true;
if(document.FormMail.nom.value != ""){
if(document.FormMail.msg.value != ""){
if(document.FormMail.objet.value != ""){
if(document.FormMail.mail.value != ""){
if(isEmail(document.FormMail.mail.value)){
return true;
}else{
valide=false;
erreurs.="\n L'adresse email est invalide.";
}
}else{
valide=false;
erreurs.="\n L'adresse email doit être spécifiée.";
}
}else{
valide=false;
erreurs.="\n L'objet du message doit être spécifié.";
}
}else{
valide=false;
erreurs.="\n Le champ du message est vide.";
}
}else{
valide=false;
erreurs.="\n Le nom de l'expéditeur doit être spécifié.";
}
}
</script>

<div id="erreur" style="display:none;">
<img src="images/loading.gif" alt=""/>
</div>

<form method="post" name="FormMail" onsubmit="return valider()" action="">
<fieldset>
<legend>Contact</legend>
<table cellspacing="6">
<tr>
<td align="right">Nom</td>
<td style="padding-left:20px;"><input type="text" id="nom" name="nom" value=""/></td>

3 réponses

Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
12 janv. 2010 à 03:57
bonjour,


Ca ne donne pas envie de lire ton truc là...
tu pourrais utiliser les balises code et poser le problème différemment et plus précisément...

ensuite tu ne poses pas une question à google ou un ordi mais à des gens, et on ne demande pas ça comme ça à des gens.
0
Bonjour,

désolé c'est la première fois que je poste ici et je pensais que le code garderait sa mise en forme :/
J'ai résolu le 1er problème et désolé pour le manque de tact j'étais sur les nerfs :(

Voilà le script qui me permet de valider un formulaire d'envoi de mail, l'évenement onsubmit appelle la fonction valider() qui retourne vrai ou faux, là tout marche.

Là où ça se complique c'est quand j'utilise inner HTML pour afficher les messages d'erreur dans une balise div. Les balise HTML (br tr td table) provoque une erreur (en fait autant que de balises) dans la validation w3c et donc dans l'execution.

En voilà une : line 60 column 53 - Erreur: document type does not allow element "br" here

Une idée ? Merci.

PS: J'ai testé avec un objet DOM mais trop complexe et puis ça ne me dit pas où est l'erreur.
PS2: j'ai testé les antislash, je sais que parfois ça vient de là, en l'occurence... non.

<script type="text/javascript">

	function validateEmail(email) {
		var reg = /^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}$/;
		return (reg.test(email));
	}
	function valider(){
		erreurs = "";
		valide = true;
		nb_err = 0;
		if(document.getElementById("nom").value == ""){
			erreurs+="Le nom de l'expéditeur doit être spécifié.<br/>";
			valide = false;
			nb_err++;
		}
		if(document.getElementById("mail").value == ""){
			erreurs+="L'adresse email doit être spécifiée.<br/>";
			valide = false;
			nb_err++;
		}else{
			if(!validateEmail(document.getElementById("mail").value)){
				erreurs+="L'adresse email est invalide.<br/>";
				valide = false;
				nb_err++;
			}
		}
		if(document.getElementById("objet").value == ""){
			erreurs+="L'objet du message doit être spécifié.<br/>";
			valide = false;
			nb_err++;
		}
		if(document.getElementById("msg").value == ""){
			erreurs+="Le champ du message est vide.<br/>";
			valide = false;
			nb_err++;
		}
		if(valide==false){
			document.getElementById("erreur").style.display = "block";
			document.getElementById("erreur").innerHTML = '<table><tr><td valign="top" width="80"><img src="images/load.gif" width="62" alt=""/></td><td>' + erreurs + '<br/></td></tr></table>';
		}
		return valide;
	}
</script>
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
14 janv. 2010 à 04:56
comment ça elle provoque une erreur?

c'est quoi l'erreur?

tu les as peut être mis dans un élément qui ne les accepte pas, pour <br /> c'est normal si l'erreur est que la balise est mal "fermé" parce que le code généré est <br> mais pour les autres je ne sais pas
0