kaygee
Messages postés51Date d'inscriptionmardi 25 septembre 2001StatutMembreDernière intervention 9 décembre 2009
-
4 sept. 2007 à 14:12
kaygee
Messages postés51Date d'inscriptionmardi 25 septembre 2001StatutMembreDernière intervention 9 décembre 2009
-
4 sept. 2007 à 15:50
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
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 4 sept. 2007 à 14:17
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 !
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 4 sept. 2007 à 14:34
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 ?
kaygee
Messages postés51Date d'inscriptionmardi 25 septembre 2001StatutMembreDernière intervention 9 décembre 2009 4 sept. 2007 à 14:47
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];
}
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();
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 sept. 2007 à 15:10
>>
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.
kaygee
Messages postés51Date d'inscriptionmardi 25 septembre 2001StatutMembreDernière intervention 9 décembre 2009 4 sept. 2007 à 15:20
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
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 sept. 2007 à 15:33
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.
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 4 sept. 2007 à 15:39
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];
kaygee
Messages postés51Date d'inscriptionmardi 25 septembre 2001StatutMembreDernière intervention 9 décembre 2009 4 sept. 2007 à 15:40
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
kaygee
Messages postés51Date d'inscriptionmardi 25 septembre 2001StatutMembreDernière intervention 9 décembre 2009 4 sept. 2007 à 15:50
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