Problème de teste de formulaire

Signaler
Messages postés
51
Date d'inscription
mardi 25 septembre 2001
Statut
Membre
Dernière intervention
9 décembre 2009
-
Messages postés
51
Date d'inscription
mardi 25 septembre 2001
Statut
Membre
Dernière intervention
9 décembre 2009
-
Salut,

j'ai un petit problème avec mon form

J'ai dans une premier temps créer une fonction de teste d'email de confirmation

function verif_conf_mail()
{
if(document.getElementById("eMail").value!=document.getElementById("eMail_conf").value)
 {
 alert("les zones email et confirmation d'email doivent être identiques");
 document.getElementById("eMail_conf").value = '';
 return false;
 }
}

rien de compliqué

le problème est, ce formulaire est un form pré-rempli avec des variable get recu de la page précédente

la première fois que j'arrive sur la page et que je me trompe dans mon email, il m'affiche ma boite alert, mais ensuite continue vers la page suivante sans s'arreter.


j'ai un code a entrer dans le formulaire, celui ci testé sur la page suivante et me renvoi a mon form, si je me trompe


a ce moment la, il stop en cas d'erreur.


J'utilise IE7, je ne comprend pas pourquoi


 


pourriez vous m'aider?

10 réponses

Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
Salut, tu comprends pas pourquoi tu utilises ie7 ? ;o)
Bon, pour être plus sérieux, ta méthode est utilisée lors du submit du formulaire je présume ( sans code...) !
Il faut donc que sur le submit tu retourne false !

[o-_-o]
Messages postés
51
Date d'inscription
mardi 25 septembre 2001
Statut
Membre
Dernière intervention
9 décembre 2009

Voila pour être clair, mais ma fonction retourne un false en cas de non correspondance

<form method="post" action="MCmultiConf.asp" name="contact_form" id="contact_form" class="formu" onSubmit="verif_conf_mail();return  validateForm(this,'Error(s)');">

J'utilise IE parce que j'y suis bien obligé, sinon cette M.... microsofesque je m'en passe largement ;o)
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
bah voilà, le truc c'est que même si ta méthode verif_conf_mail(); retourne faux, le submit ne le prendra pas en compte, mais prendra en compte le retour de validateForm(this,'Error(s)'); ( qui devrait du coup être à faux aussi ).
pourquoi ne pas intégrer la validation de l'email dans la méthode validateForm ?

[o-_-o]
Messages postés
51
Date d'inscription
mardi 25 septembre 2001
Statut
Membre
Dernière intervention
9 décembre 2009

c'est un code que je n'ai pas crée personnellement et donc pas toujours très clean et comme il est utilisé par pas mal de page, je n'ai pas le droit de le refaire pour le moment.

ceci me fait arriver au problème suivant avec le validateform qui lui teste si les champs sont vides ou non

je recois donc des variables en post que j'affiche automatiquement dans mes textbox, j'ai aussi un textbox code qui est testé sur la page suivante et si erreur me fait revenir a mon form.

au premier passage dans le form, si j'efface les informations placée automatiquement et que je vais un submit, il ne bloque, comme si mon textbox n'était pas vide, je n'y comprend rien du tout

/ Boucle de validation
function validateForm(form,title)
{
 
 
 var err=0;
 var msg='<fieldset id="error" class="vis"><legend>' + title + '</legend>';
 return_validateInput = validateInput(document.getElementsByTagName("input"));
 err+=return_validateInput[0];
 msg+=return_validateInput[1];
 return_validateInput = validateInput(document.getElementsByTagName("select"));
 err+=return_validateInput[0];
 msg+=return_validateInput[1];
 validateInput(document.getElementsByTagName("textarea"));
 err+=return_validateInput[0];
 msg+=return_validateInput[1];
 
 if (err==0)
 { 
  return(true);  
 }
 else
 {
  msg+="</fieldset>";
  document.getElementById("error").innerHTML=msg;
  return false;
 }
 
}
function validateInput(domElements)

 var validateInput_err=0; 
 var validateInput_msg='';
 for (i = 0; i < domElements.length; i++)
  {
   if (domElements[i].className=="oblig")
   {
    if (!(isNotEmpty(domElements[i])))
    {
    validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
    }
   }
   if (domElements[i].name.substring(0,5)=="eMail")
   {
    if (!(isEMailAddr(domElements[i])))
    {
    validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
    }
   }
   if (domElements[i].name.substring(0,4)=="nbre")
   {
    if (!(isNumber(domElements[i])))
    {
    validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
    }
   }
  }
 return_validateInput = new Array();
 return_validateInput[0] = validateInput_err;
 return_validateInput[1] = validateInput_msg;
 return return_validateInput;
}
// Vérifie si un champ a bien été renseigne
function isNotEmpty(elem)

 var str = elem.value;
 var re = /.+/;
 if(!str.match(re))
 {
  setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
  return false;
    }
    else
    {
     return true;
    }
}
// Vérifie si l'adresse e-mail est valide
function isEMailAddr(elem)
{
 isNotEmpty(elem);
 var str = elem.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re))
    {
        //elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    }
    else
    {
        return true;
    }
}


//Vérifie si un champ ne contient que des chiffres
function isNumber(elem)
{
 isNotEmpty(elem);
 var str = elem.value;
    var re = /^[-]?\d*\.?\d*$/;
    str = str.toString();
    if (!str.match(re))
    {
        /*alert("Veuillez respecter le format de date de naissance suivant : '05031970' pour '5 mars 1970'.");*/
  //elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    }
    else
    {
    return true;
    }
}


// Vérifie si un champ contient 8 caractères
function isLen8(elem)
{
 var str = elem.value;
    var re = /\b.{8}\b/;
    if (!str.match(re))
    {
        elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    }
    else
    {
        return true;
    }
}


// Positionne le curseur dans un champ donné
function focusElement(formName, elemName)
{
 var elem = document.forms[formName].elements[elemName];
    elem.focus();
    //elem.select();
}
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
>>

tu comprends pas pourquoi tu utilises ie7 ? ;o)
    excellent zobibol !

>>, sinon cette M.... microsofesque je m'en passe largement ;o)
    parce ce que tu fais fonctionne avec d'autres navigateurs ?
    plutôt curieux... tu me dis lequel ?  

    la base :

    < form action... onsubmit="return(ctr());"... />
       ... champs de saisie...
      
    </form>

    <script....
       function ctr()
       {   contrôle de ce qu'on veut
             si erreur ==> return false;
             sinon : return true;
       }...



<hr />




Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
Messages postés
51
Date d'inscription
mardi 25 septembre 2001
Statut
Membre
Dernière intervention
9 décembre 2009

Oui tout a fait, et je fais quoi a ton avis

de plus je n'ai pas dis que ce code fonctionnais sur ie7, j'ai dis que ie7 c'était de la merde de microsoft et que bien souvent un code fonctionne correctement sur d'autre browser
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
bien souvent... peut-être.    mais le tien ?
>> et je fais quoi a ton avis
    pas comme je te montre ou comme zobibol t'a expliqué en tout cas.
mais bon... pour moi : plonk, comme on dirait ailleurs...



<hr />




Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
Moi d'après ce que je ne comprends plus ( m'a cassé la tête ),  je ferais :
function validateForm(form,title)
{
    // Test l'email en premier
if(document.getElementById("eMail").value!=document.getElementById("eMail_conf").value)
 {
 alert("les zones email et confirmation d'email doivent être identiques");
 document.getElementById("eMail_conf").value = '';
 return false;
 }
 // puis les autres test....
var err=0;
 var msg='<fieldset id="error" class="vis"><legend>' + title + '</legend>';
 return_validateInput = validateInput(document.getElementsByTagName("input"));
 err+=return_validateInput[0];
 msg+=return_validateInput[1];
 return_validateInput = validateInput(document.getElementsByTagName("select"));
 err+=return_validateInput[0];
 msg+=return_validateInput[1];
 validateInput(document.getElementsByTagName("textarea"));
 err+=return_validateInput[0];
 msg+=return_validateInput[1];
 
 if (err==0)
 { 
  return(true);  
 }
 else
 {
  msg+="</fieldset>";
  document.getElementById("error").innerHTML=msg;
  return false;
 }

et je supprimerais le verif_conf_mail() du submit :
    onsubmit="validateForm(this,'Error(s)');"
Non ?
[o-_-o]
Messages postés
51
Date d'inscription
mardi 25 septembre 2001
Statut
Membre
Dernière intervention
9 décembre 2009

Mon problème est que mon code fonctionne lors du dernier passage mais pas lors du premier, il retourne bien mon false pour l'email donc pas de souci, mais il refuse de tester si mon champs est vide ou non, hors si a l'encodage de mon compte une erreur se produit, il revient sur le form et la le test fonctionne
Messages postés
51
Date d'inscription
mardi 25 septembre 2001
Statut
Membre
Dernière intervention
9 décembre 2009

j'ai fais la modif, mais ca ne resoud pas mon problème générale de mon form, au premier passage, il ne vérifie pas si mon champs est vide, ou alors il considère que mon champs n'est pas vide