Fusionner 2 JavaScript

JypX Messages postés 67 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 6 février 2010 - 21 janv. 2010 à 20:59
sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010 - 24 janv. 2010 à 17:28
Bonjour,

J'ai tenté de fusionner 2 JS, en vain :
- vérifie si le pseudo existe
- vérifie si les champs sont bien remplis

Le problème c'est qu'il averti l'utilisateur que le pseudo existe mais ne bloque pas la validation du formulaire

// 1ème script
function writediv(texte)
{
document.getElementById('pseudobox').innerHTML =  texte;
}

function verifPseudoDB(pseudo)
{
if(pseudo != '')
{
if(pseudo.length<3)
writediv(' '+pseudo+' :  ce pseudo est trop court');
else if(pseudo.length>10)
writediv(''+pseudo+' : ce pseudo est trop long');
else if(texte  = file('verifpseudo.php?login= '+escape(pseudo)))
{
if(texte == 1)
writediv(' '+pseudo+' :  ce pseudo est deja pris');
else if(texte  ==  2)
writediv(' '+pseudo+' :  ce pseudo est libre');
else
writediv(texte);
}
}
}
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object  = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}
// 2ème script
function verifPseudo(champ)
{
   if(champ.value.length < 3 || champ.value.length > 10)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifMail(champ)
{
   var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
   if(!regex.test(champ.value))
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifMdP(champ)
{
   if(champ.value.length < 6 || champ.value.length > 10)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifForm(f)
{
   var pseudoOk = verifPseudo(f.pseudo);
   var mailOk = verifMail(f.email);
   var MdPOk = verifMdP(f.pass);
   
   if(pseudoOk && mailOk && MdPOk)
      return true;
   else
   {
      alert("Veuillez remplir correctement tous les champs");
      return false;
   }
}
function surligne(champ, erreur)
{
   if(erreur)
      champ.style.backgroundColor = "#fba";
   else
      champ.style.backgroundColor = "";
}

6 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
21 janv. 2010 à 21:06
Bonjour,
ta fonction verifPseudoDB devrait renvoyer false/true pour la suite des autres vérif, et cela ne semble pas le cas dans ce que l'on voit ici...
;O)
0
JypX Messages postés 67 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 6 février 2010
21 janv. 2010 à 21:10
J'avais testé en rajoutant un "truc" pour renvoyer false/true mais interférait avec cette fonction du 1er script :
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);[code=php][code=js]
/code
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}/code
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
22 janv. 2010 à 19:03
Bonjour,
je dirais à première vue que
if(texte = = 1){
  writediv(' '+pseudo+' :  ce pseudo est deja pris');
  return( false);
}
else if(texte  == 2)
// et la suite....

mais loin d'être sur, il faudrait voir comment tu appelles la fonction et laquelle...
;O)
0
sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010
24 janv. 2010 à 16:45
Sa pourait venir de ta form, soit tu l'a placé en onsubmit ou soit sur le boutton submit...
Il y'a deux solution pour que cela fonctionne:
Le placer dans onsubmit et faire dans le script un return false pour bloquer l'envoie si il y'a un problème ou à la place du boutton submit placer un boutton simple et de mettre en attribut "onclick" la fonction qui vérifie, si tout est ok faire un form.submit()...
Aussi:
return( false); peut être remplacé par
return false;
c'est plus jolie lol enfin c'est mon avis...
0

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

Posez votre question
JypX Messages postés 67 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 6 février 2010
24 janv. 2010 à 17:14
Mon code de test complet
<?
if (isset($_POST['Submit'])) {
echo "test";
}
?>
<html>

<head>

<title>Inscription</title>
<meta http-equiv= "Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
// 1ème script
function writediv(texte)
{
document.getElementById('pseudobox').innerHTML = texte;
}

function verifPseudoDB(pseudo)
{
if(pseudo != '')
{
if(pseudo.length<3)
writediv(' '+pseudo+' :  ce pseudo est trop court');
else if(pseudo.length>10)
writediv(''+pseudo+' : ce pseudo est trop long');
else if(texte  = file('verifpseudo.php?login= '+escape(pseudo)))
{
if(texte == 1)
writediv(' '+pseudo+' :  ce pseudo est deja pris');
else if(texte  ==  2)
writediv(' '+pseudo+' :  ce pseudo est libre');
else
writediv(texte);
}
}
}
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object  = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}
// 2ème script
function verifPseudo(champ)
{
   if(champ.value.length < 3 || champ.value.length > 10)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifMail(champ)
{
   var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
   if(!regex.test(champ.value))
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifMdP(champ)
{
   if(champ.value.length < 6 || champ.value.length > 10)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifForm(f)
{
   var pseudoOk = verifPseudo(f.pseudo);
   var mailOk = verifMail(f.email);
   var MdPOk = verifMdP(f.pass);
   
   if(pseudoOk && mailOk && MdPOk)
      return true;
   else
   {
      alert("Veuillez remplir correctement tous les champs");
      return false;
   }
}
function surligne(champ, erreur)
{
   if(erreur)
      champ.style.backgroundColor = "#fba";
   else
      champ.style.backgroundColor = "";
}
</script>

</head>




Inscription

<form action="" method="post" name="inscription" onsubmit="return verifForm(this)">
<table width="400"  border="0" cellpadding="10" cellspacing="0" bgcolor="#eeeeee">

----, Pseudo</td>

,

----

E-Mail,

,

----

Mot de passe,

,

----

</td>

</tr>

</table>
</form>
[index.php Retour à la page d'accueil]



</html>
0
sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010
24 janv. 2010 à 17:28
Bon j'ai regardé attentivement je suis pas sur que sa soit bon mais sa coute rien d'essayer:
<?
if (isset($_POST['Submit'])) {
echo "test";
}
?>
<html>

<head>

<title>Inscription</title>
<meta http-equiv= "Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
var etatpseudo=0 //Le pseudo n'est pas correct, cet état se change dynamiquement dans la fonction verifPseudoDB()... [Lignes 25, 28, 33 et 36], elle est aussi utilisé dans la fonction verifForm dans la ligne 102.
// 1ème script
function writediv(texte)
{
document.getElementById('pseudobox').innerHTML = texte;
}

function verifPseudoDB(pseudo)
{
if(pseudo != '')
{
if(pseudo.length<3)
etatpseudo=0;
writediv(' '+pseudo+' :  ce pseudo est trop court');
else if(pseudo.length>10)
etatpseudo =0;
writediv(''+pseudo+' : ce pseudo est trop long');
else if(texte =  file('verifpseudo.php?login='+escape(pseudo)))
{
if(texte == 1)
etatpseudo=0;
writediv(' '+pseudo+' :  ce pseudo est deja pris');
else if(texte  ==  2)
etatpseudo=1
writediv(' '+pseudo+' :  ce pseudo est libre');
else
writediv(texte);
}
}
}
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object  = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}
// 2ème script
function verifPseudo(champ)
{
   if(champ.value.length < 3 || champ.value.length > 10)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifMail(champ)
{
   var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
   if(!regex.test(champ.value))
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifMdP(champ)
{
   if(champ.value.length < 6 || champ.value.length > 10)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}
function verifForm(f)
{
   var mailOk = verifMail(f.email);
   var MdPOk = verifMdP(f.pass);
   
   if(etatpseudo && mailOk && MdPOk)
      return true;
   else
   {
      alert("Veuillez remplir correctement tous les champs");
      return false;
   }
}
function surligne(champ, erreur)
{
   if(erreur)
      champ.style.backgroundColor = "#fba";
   else
      champ.style.backgroundColor = "";
}
</script>

</head>




Inscription

<form action="" method="post" name="inscription" onsubmit="return verifForm(this)">
<table width="400"  border="0" cellpadding="10" cellspacing="0" bgcolor="#eeeeee">

----, Pseudo</td>

,

----

E-Mail,

,

----

Mot de passe,

,

----

</td>

</tr>

</table>
</form>
[index.php Retour à la page d'accueil]



</html>
0