Vérification de formulaire

Résolu
Allan007 Messages postés 82 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 12 février 2012 - 1 avril 2008 à 15:10
Allan007 Messages postés 82 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 12 février 2012 - 2 avril 2008 à 17:39
Bonjour à tous,

je débute en JS, j'ai récupérer par ci et par la des vérifications de formulaire pour me donner une idée puis j'en ai fait un a ma sauce.

J'ai un problème, le JS vérifie tous les champs, mais quand tous les champs sont correct, il n'envoie pas le formulaire...

Je vous colle le code source, si vous pouvez me trouver une solution ça serais vraiment gentil car je ne comprend vraiment pas ....






JavaScript:




function FormVerifeIC(index_connection) {
    if (!FormAllVerifeIC(index_connection.TB_index_pseudo) || FormAllVerifeIC(index_connection.TB_index_mdp)) {
        return false;
    }
    else {
        index_connection.submit();
        return true;
    }
}
function FormAllVerifeIC(input) {    if (input.value null || input.value.length 0) {
        input.style.backgroundColor = "#ff7373"; 
    }
    var str = input.value;
    for (var i = 0; i < str.length;i++){
        var ch = str.substring(i,i+1);
        if ( ch == " ") {
            input.style.backgroundColor = "#ff7373"; 
        }
        else {
            input.style.backgroundColor = "#9fd69c";       
            return true;
        }
    }
    return true;
}







HTML :





        <form name="index_connection" action="index.php5?p=11" method="post">
       
        <label for="pseudo">Pseudo</label>

        <label for="mdp">Mot de passe</label>

       
        [index.php5?p=10 Inscription]
       

        [index.php5?p=11&MdpP=1 Mot de passe perdu]
       

        </form>


J'ai mit aussi une vérification de la touche entrer dans les input qui fonctionne correctement, donc je ne l'ai pas coller.

Merci par avance de votre aide, à bientôt.








G.Allan

13 réponses

Allan007 Messages postés 82 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 12 février 2012
2 avril 2008 à 17:39
Super merci a vous bultez & PetoleTeam !

Je vous colle le code source fonctionnel pour ceux qui veulent faire une vérification des champs avec changement de background.
Vous pouvez ajouter autant de champs que vous voulez il suffit juste de dupliquer les champs a vérifier dans FormVerifeIC (en les renommant par vos champs bien sur !)




HTML





<form name= "index_connection" onsubmit="return FormVerifeIC();" action="index.php5?p=11" method="post">

<label for="pseudo">Pseudo</label>

<label for="mdp">Mot de passe</label>

[index.php5?p=10 Inscription]

[index.php5?p=11&MdpP=1 Mot de passe perdu]

</form>





JavaScript





function FormVerifeIC() {
    var erreur = 0;
    erreur += FormAllVerifeIC(document.index_connection.TB_index_pseudo);
    erreur += FormAllVerifeIC(document.index_connection.TB_index_mdp);
    return(erreur == 0);
}

function FormAllVerifeIC(input) {    if (input.value null || input.value.length 0) {
        input.style.backgroundColor = "#ff7373"; 
        return (1);
    }
    var str = input.value;
    for (var i = 0; i < str.length;i++){
        var ch = str.substring(i,i+1);
        if (ch == " ") {
            input.style.backgroundColor = "#ff7373"; 
            return (1);
        }
        else {
            input.style.backgroundColor = "#9fd69c";       
            return (0);
        }
    }
    return (0);
}





Merci encore a vous !!




G.Allan
3
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 avril 2008 à 15:35
Bonjour,

    if ( !FormAllVerifeIC(index_connection.TB_index_pseudo) ||
         !FormAllVerifeIC(index_connection.TB_index_mdp))

    tu compliques un peu, me semble-t-il... mais bon...
    normalement, c'est dans le onsubmit du formulaire
       qu'on fait les contrôles, submit() du formulaire en javascript
       est à éviter ( si javascript désactivé... par exemple ? )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
Allan007 Messages postés 82 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 12 février 2012
1 avril 2008 à 15:41
Merci pour ta réponse bultez,

J'ai essayer avec le onsubmit dans la balise form mais ça ne marche pas (le JS ne s'exécute pas...)

Je rajouterais une fonction si le JS est désactiver (ça existe il me semble) que sa passe par la vérif du php.

Peux tu me coller le code fonctionnel ? car je suis au bout du roulot, j'ai essayer plein de choses, sans aucun résultat....

Merci par avance.


G.Allan
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 avril 2008 à 15:52
>>J'ai essayer avec le onsubmit dans la balise form mais ça ne marche pas (le JS ne s'exécute pas...)

<form... onsubmit="return(fonction_ctr());"...>
fonction_ctr()
{   si erreur : return false;
     sinon, return true;   }

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0

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

Posez votre question
Allan007 Messages postés 82 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 12 février 2012
1 avril 2008 à 16:03
Le JS s'exécute mais n'envois toujours pas les informations à la page php si tout est bon ...




G.Allan
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 avril 2008 à 16:06
>>Le JS s'exécute mais n'envois toujours pas les informations à la page php s
    ça devrait....
    erreur coté php ?

    essaye <form... action="javascript:alert('envoi ok');"...>
       si ça affiche "envoi ok", c'est transmis,
       sinon... on peut voir, avec les modifs ?

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
Allan007 Messages postés 82 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 12 février 2012
1 avril 2008 à 16:27
Le php ne cause aucune erreur, je le développe depuis pas mal d'année...
avec ton action dans le form le message s'affiche SI le bouton du formulaire est de type="submit" mais s'il est en type="button" ça ne marche pas.

Je l'ai mit en type="button" car en type="submit" les informations sont transmise a ma page php sans aucune vérification des champs...

Je vous colle le html et js



        <form name="index_connection" onsubmit="return(FormVerifeIC());" action="index.php5?p=11" method="post">
       
        <label for="pseudo">Pseudo</label>

        <label for="mdp">Mot de passe</label>

       
        [index.php5?p=10 Inscription]
       

        [index.php5?p=11&MdpP=1 Mot de passe perdu]
       

        </form>

function FormVerifeIC() {
    if (!FormAllVerifeIC(index_connection.TB_index_pseudo) || FormAllVerifeIC(index_connection.TB_index_mdp)) {
        return false;
    }
    else {
        index_connection.submit();
        return true;
    }
}
function FormAllVerifeIC(input) {    if (input.value null || input.value.length 0) {
        input.style.backgroundColor = "#ff7373"; 
    }
    var str = input.value;
    for (var i = 0; i < str.length;i++){
        var ch = str.substring(i,i+1);
        if ( ch == " ") {
            input.style.backgroundColor = "#ff7373"; 
        }
        else {
            input.style.backgroundColor = "#9fd69c";       
            return true;
        }
    }
    return true;
}

C'est bizzard car le bouton est de type submit mais ne transmet pas les informations a la page PHP.
Le JS fonctionne mais le transmet les informations ...

Le JS ma trop dégouté

G.Allan
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 avril 2008 à 16:45
petites imprécisions....

        <form     name= "index_connection" onsubmit="return(FormVerifeIC());"
                    action=" javascript:alert('ok'); " method ="post">
action= message javascript donc pour le test !
function FormVerifeIC() {
    if ( !FormAllVerifeIC( document .index_connection.TB_index_pseudo) ||
         !FormAllVerifeIC( document.index_connection.TB_index_mdp)) {
        return false;
    }
    else {
        return true;   // et pas de SUBMIT du formulaire ! ça le fait tout seul...
    }
...
function FormAllVerifeIC(input) {    if (input.value null || input.value.length 0) {
        input.style.backgroundColor = "#ff7373";
          return false;
    }

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
Allan007 Messages postés 82 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 12 février 2012
1 avril 2008 à 17:13
Super !!! merci à toi je viens d'y arriver ça fonctionne !!

Il y a juste un petit problème,
si je met le return false; dans l'IF de la fonction FormAllVerifeIC il ne change qu'une seule couleur d'arriere plant sans envoyer le formulaire.
Si je ne l'y met pas, il envoi le formulaire...

Comment faire pour que la couleur d'arrière plant s'applique a tous les champs où se trouve l'erreur ?

Merci beaucoup pour ton aide.

Voici le code source actuelle:






HTML :




        <form name="index_connection" onsubmit="return FormVerifeIC();" action="index.php5?p=11" method="post">
       
        <label for="pseudo">Pseudo</label>

        <label for="mdp">Mot de passe</label>

       
        [index.php5?p=10 Inscription]
       

        [index.php5?p=11&MdpP=1 Mot de passe perdu]
       

        </form>

JavaScript :

function FormVerifeIC() {
    if (!FormAllVerifeIC(document.index_connection.TB_index_pseudo) || !FormAllVerifeIC(document.index_connection.TB_index_mdp)) {
        return false;
    }
    else {
        return true;
    }
}
function FormAllVerifeIC(input) {    if (input.value null || input.value.length 0) {
        input.style.backgroundColor = "#ff7373"; 
        return false;
    }
    var str = input.value;
    for (var i = 0; i < str.length;i++){
        var ch = str.substring(i,i+1);
        if ( ch == " ") {
            input.style.backgroundColor = "#ff7373"; 
            return false;
        }
        else {
            input.style.backgroundColor = "#9fd69c";       
            return true;
        }
    }
    return true;
}

G.Allan
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
1 avril 2008 à 19:00
Bonjour à tous,
fais une gestion par comptage du
nombre d'erreurs, par exemple
//---------------------
function
FormVerifeIC(){
  var Erreur = 0; // Init Erreur a
zero
  Erreur +=
FormAllVerifeIC(document.index_connection.TB_index_pseudo);
  Erreur +=
FormAllVerifeIC(document.index_connection.TB_index_mdp);
  return( Erreur ==
0);



// retourne true si pas d'erreur






}

et ta fonction FormAllVerifeIC devient
//-----------------------------
function
FormAllVerifeIC(input){   if (input.value null || input.value.length
0) {
    input.style.backgroundColor = "#ff7373";
    return (1);

  }
  var str = input.value;
  for (var i = 0; i <
str.length;i++){
    var ch = str.substring(i,i+1);
    if ( ch == " ")
{
      input.style.backgroundColor = "#ff7373";
      return (1);

    }
    else {
      input.style.backgroundColor = "#9fd69c";

      return (0);
    }
  }
  return (0);
}
PS
: je n'ai pas trop saisi ta deuxième fonction, il me semble que si le premier caractère n'est pas un espace cela retourne pas d'erreur, mais si c'est le deuxième ???
...mais bon...
;O)
0
Allan007 Messages postés 82 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 12 février 2012
1 avril 2008 à 19:17
Merci pour ta réponse Petole Team,

je viens d'essayer ton code source et ça ne fait aucune vérification, ça transmet directement les informations...
J'ai mit un if (erreur == 0) { alert("OK"); } et ça n'affiche rien ....

la 2 ème fonction je l'ai chopper sur le net, elle sert à vérifier s'il y a un ou plusieurs espace avant le texte.




G.Allan
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
1 avril 2008 à 19:26
SORRY je n'ai pas tester ton code...
<table bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, la 2 ème fonction je l'ai chopper sur le net,
elle sert à vérifier s'il y a un ou plusieurs espace avant le
texte</td>
</td></tr></tbody></table>
dans
l'absolu elle vérifie si le 1st caractère est un espace et ce à cause du else
qui return( true)
for (var i =
0; i < str.length;i++){
  var ch = str.substring( i, i+1);
  if ( ch == "
") {
    input.style.backgroundColor = "#ff7373";
    return false;
  }

  else {
    input.style.backgroundColor = "#9fd69c";
    return true;
  }

}
;O)
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
1 avril 2008 à 19:32
Je viens de tester le code c'est OK !
<table bgcolor= "#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, J'ai mit un if (erreur ==
0)</td>
</td></tr></tbody></table> Attention
Erreur == 0
;O)
0
Rejoignez-nous