Problème de validation formulaire javascript
xav
-
Atropa Messages postés 2051 Statut Membre -
Atropa Messages postés 2051 Statut Membre -
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>
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>
A voir également:
- Problème de validation formulaire javascript
- Whatsapp formulaire opposition - Guide
- Ethernet n'a pas de configuration ip valide - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Formulaire de contact le bon coin introuvable - Forum Réseaux sociaux
3 réponses
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.
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.
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.
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>