Probleme avec l'evenement onsubmit????

rwikus Messages postés 994 Statut Membre -  
rwikus Messages postés 994 Statut Membre -
Bonjour,
voila j'ai un formulaire qui contient par exemple un pseudo et un mot de passe
j'ai fait des fonction en javascript qui vérifient si le pseudo et le mot de passe sont par exemple supérieur a 6 caractère...ect et
a la fin j'ai fait une fonction général qui fait appel a tout les autre fonction c'est a dire celle qui vérifie le pseudo et celle qui vérifie le mot de passe
le problème c'est que lorsque je tape sur valider qui est un bouton de type submit il fais appel a du javascript vu que j'ai mis:
<form name="f" action="pagecible.php" method="post" onsubmit="verifiegeneral()">
il fait appel a la fonction verifiegeneral et détecte les erreur normal mais il bloque pas le lancement du formulaire il va malgré les erreur a la page php
moi je veux qui si ya des problème on reste dans la méme page
merci de bien vouloir m'aider

13 réponses

avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
onsubmit="return verifiegeneral()"
Dans ta fonction, si il faut envoyer le formulaire, fait "return true;" sinon "return false;"
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Dans ton javascript, il faut mettre "return false" pour bloquer le submit quand il y a des erreurs.

Xavier
0
rwikus Messages postés 994 Statut Membre 56
 
c'est a dire dans la fonction verifiegeneral()
contiendra un true si ya pa d'erreur et retournera un false dans le cas contraire?
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Oui.
Mais n'oublie pas d'ajouter return avant l'appel de ta fonction dans onsubmit
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rwikus Messages postés 994 Statut Membre 56
 
<script type="text/javascript">
function verifpseudo(champ){
if(champ.length()<3){
return true
}
else return false
}

function verifpass(champ){
if(champ.length()<6){
return true
}
else return false
}

function verifMail(champ)
{
var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
if(!regex.test(champ.value))
{
return false;
}
else
{
return true;
}
}
function verifForm(f)
{

var pseudoOk = verifPseudo(f.pseudo);
var passOk=verifpass(f.passe);
var mailOk = verifMail(f.mail);

if( pseudoOk && mailOk && passeOk )
return true;
else
{

return false;
}
}
</script>
sachant que ya dans mon formularie 3 zone de texte pseudo ,mot de passe et un mail
lorseque je valide méme si ya un probleme dans le mail il va aller dans la page php
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Où est la fonction verifiegeneral ? C'est la même que verifForm ?
Sinon, j'ai l'impression que tu fais tes tests à l'envers (<3 au lieu de >3) ; et par ailleurs, string.length ne prend pas de parenthèse (c'est un attribut et non pas une fonction)
Voilà ce que je te propose (j'ai repris ton code et l'ai simplifié) :

Javascript :
<script type="text/javascript">
function verifpseudo(champ)
{
  return champ.length >= 3;
}

function verifpass(champ)
{
  return champ.length >= 6;
}

function verifMail(champ)
{
  var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
  return regex.test(champ.value);
}

function verifiegeneral(f)
{
  var pseudoOk = verifPseudo(f.pseudo);
  var passOk=verifpass(f.passe);
  var mailOk = verifMail(f.mail);

  return pseudoOk && mailOk && passeOk;
}
</script> 

HTML :
<form name="f" action="pagecible.php" method="post" onsubmit="return verifiegeneral()"> 


Voilà :)

Xavier
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Il ne faut pas oublier de préciser le formulaire en paramètre :
<form name="f" action="pagecible.php" method="post" onsubmit="return verifiegeneral(this)">
0
rwikus Messages postés 994 Statut Membre 56
 
je l'ai fait
0
rwikus Messages postés 994 Statut Membre 56
 
merci bcppp pr votre aide
mais just un dernier truc
je crois que j'ai trouvé le problème car j'ai ajouté aussi la date de naissance au formulaire qui se compose de 3 champ; jour, mois, année et qui sont 3 zone de texte
voila la fonction qui traite le format de la date s'il est vrais ou faux:

function verifieAn(a,b,c){
var erreur=true;
if (isNaN(a+b+c)|| c>2000 ||c<1900)
{alert("veuillez entrer des numeros entre 1 et 31 pour le jour, 1 et 12 pour le mois et un numeros entre 1900 et 2000");erreur=false;return erreur;}
else
{
var tp="";
if (c%4 == 0 && ( c%100 != 0 || c%400 == 0))
tp= "bi";
else
tp= "";//l'erreur tu dois la corriger
switch (b){
case "01":if(a<1 || a>31){alert("Le mois de Janvier comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");erreur=false;return erreur;};
break;
case"02":if(tp=="bi"){if(a<1 || a>29){alert("Le mois de Février comporte 29 jours car l'année choisie est bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 29.");erreur=false;return false;}}
else{if(a<1 || a>28){alert("Le mois de Février comporte 28 jours car l'année choisie n'est pas bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 28.");erreur=false;return false;}};
break;
case "03":if(a<1 || a>31){alert("Le mois de Mars comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");erreur=false;return false;};
break;
case "04":if(a<1 || a>30){alert("Le mois de Avril comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");erreur=false;return false;};
break;
case "05":if(a<1 || a>31){alert("Le mois de Mai comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");erreur=false;return false;};
break;
case "06":if(a<1 || a>30){alert("Le mois de Juin comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");erreur=false;return false;};
break;
case "07":if(a<1 || a>31){alert("Le mois de Juillet comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");erreur=false;return false;};
break;
case "08":if(a<1 || a>31){alert("Le mois de Août comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");erreur=false;return false;};
break;
case "09":if(a<1 || a>30){alert("Le mois de Septembre comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");erreur=false;return false;};
break;
case "10":if(a<1 || a>31){alert("Le mois de Octobre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");erreur=false;return false;};
break;
case "11":if(a<1 || a>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");erreur=false;return false;};
break;
case "12":if(a<1 || a>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");erreur=false;return false;};
break;
default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");erreur=false;return false;
}
}
if(erreur==true)
return true;
else
return false;
}

je l'ai biensur ajouté dans la fonction verifform
seulement voila lorsque je me trompe dans la date il me le signal et lorsque je valide pour la 2em foie mn formulaire il le valide normal et il passe vers la page php malgré que l'erreur n'a pas été corrigé
merci de bien vouloir me répondre et veuillez m'excuser si j'abuse de votre temps
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
La console d'erreur de Firefox dans "Outils" te sera bien utile...
0
rwikus Messages postés 994 Statut Membre 56
 
et méme j'ai essayé d'enlever la date de naissance et j'ai tester avec le pseudo et le mot de passe et le mail ,
j'ai rempli le pseudo et le mot de passe et j'ai laisser le mail vide
la première foie sa l'a signaler mais la deuxième foie sa a charger normalment
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Et la console ne te dit rien ?
Penses à effacer les messages déjà présents pour voir les nouvelles alertes.
0
rwikus Messages postés 994 Statut Membre 56
 
ouais je me suis trompé dans l'ecriture de la fonction mercii bcppp
parcontre celle de al date de naissence jarrive pas a trouver l'erreur
est ce que ma fonction est juste
genre elle retourne tout?
true si c'est vrais et false si c'est faux tout les cas sont bien tésté?
0