IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

fonction javascript qui return toujours true


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut fonction javascript qui return toujours true
    Bonjour,
    j'ai un formulaire html, et un fonction javascript pour vérifier le contenu.
    Le probleme c'est que ma fonction javascript renvoi tjrs "true" alors que je met return false.
    Mon form ressemble à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <FORM name="formulaire" ACTION="index.php?p=valid_inscription" METHOD="POST" onsubmit="return validInscription();">
    ..
    ..
    <input style="border:1px solid #ff00c6; background-color:#8a0068; color:#fcf;" type="submit" name="valider" value="Valider votre inscription"  >
    </form>
    Et voici ma fonction js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    function validInscription()
    {
     
    	alert("false");
     
     
    	if($F('pseudo').length < 2)
    	{
    		$("result_name").innerHTML="<span class='red'>Le pseudo est invalide car trop court</span>";
    		$("pseudo").focus;
    		return false;
    	}
     
    	if($F('pass1').length == 0 || $F('pass2').length == 0)
    	{
     
    		$("result_pass").innerHTML="<span class='red'>Vous devez saisir 2 fois le meme mot de passe</span>";
    		$("pass1").focus;
    		$("pass1").innerHTML='';
    		$("pass2").innerHTML='';
    		return false;
    	}
    			return false;
    	if($F('pass1') != $F('pass2'))
    	{
    		$("result_pass").innerHTML="<span class='red'>Vous avez saisi 2 pass diff&eacute;rents</span>";
    		$("pass1").focus;
    		$("pass1").innerHTML='';
    		$("pass2").innerHTML='';
    		return false;
    	}
    	if($F('age')<18)	
    	{
     
    		$("result_age").innerHTML="<span class='red'>Vous devez etre majeur pour vous inscrire sur ce site</span>";
    		$("age").focus;
    		return false;
    	}
    	if($('sexe_m').checked==false && $('sexe_f').checked==false)
    	{
     
    		$("result_sex").innerHTML="<span class='red'>Choisissez votre sex</span>";
    		//$("nickname").focus;
    		return false;
    	}
    	if(!document.getElementById('id_47').checked)
    	{
     
    		$("result_charte").innerHTML="<span class='red'>Vous devez accepter la charte</span>";
    		document.formulaire.id_47.focus();
    		return false;
    	}
    return false;
     
     
    }
    Si je saisi un champ valide dans pseudo donc >2 caract, le formulaire est submité...
    pourtant j'ai des return false de partout..
    une idée?
    merci d'avance

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Bonsoir,

    C'est quand tu saisis une valeur de longueur < 2 dans pseudo que tu as le problème ?

    tu as importé la librairie prototype.js ?

    tu as bien un et un seul champ d'id pseudo, une et une seule div d'id result_name

    remarque il faut les parenthèses à focus (mais ce n'est pas le probleme je pense)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Bonsoir,

    C'est quand tu saisis une valeur de longueur < 2 dans pseudo que tu as le problème ?
    Si c'est inférieur à 2 le texte en rouge s'écrit bien, mais le form est quand même envoyé.
    tu as importé la librairie prototype.js ?
    Oui
    <script type="text/javascript" src="./js/prototype-1.6.0.2.js"></script>

    tu as bien un et un seul champ d'id pseudo, une et une seule div d'id result_name
    oui.

    J'ai modifié ma fonction avec des alerts pour avoir un retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function validInscription()
    {
    	var send=false;
    
    
    	
    	if($F('pseudo').length < 2)
    	{
    		$("result_name").innerHTML="<span class='red'>Le pseudo est invalide car trop court</span>";
    		$("pseudo").focus;
    		alert("ici1");
    	}
    	else
    	{
    		alert("ici2");
    		return false;
    	}
    alert("ici_bis = "+send);
    	if($F('pass1').length == 0 || $F('pass2').length == 0)
    	{
    
    		$("result_pass").innerHTML="<span class='red'>Vous devez saisir 2 fois le meme mot de passe</span>";
    		$("pass1").focus;
    		$("pass1").innerHTML='';
    		$("pass2").innerHTML='';
    		alert("ici3");
    	}
    alert("ici4");
    .....
    }
    Et j'ai ceci: lorsque je valide le formulaire entièrement vide:
    alert: ici1
    alert: ici_bis = false
    <== et la plus rien et le formulaire est envoyé...

  4. #4
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Alors comme tu as mis d'autres alertes et que tu ne les a pas, on sait qu'il y a une erreur là dedans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    alert("ici_bis = "+send);
    	if($F('pass1').length == 0 || $F('pass2').length == 0)
    	{
     
    		$("result_pass").innerHTML="<span class='red'>Vous devez saisir 2 fois le meme mot de passe</span>";
    		$("pass1").focus;
    		$("pass1").innerHTML='';
    		$("pass2").innerHTML='';
    		alert("ici3");
    	}
    alert("ici4");
    et l'erreur c'est que les input password n'ont pas de propriété innerHTML mais value !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    J'ai modifié les innerHtml en value pour les password.
    et les focus en focus()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    function validInscription()
    {
    	var send=false;
     
    	if($F('pseudo').length < 2)
    	{
    		$("result_name").innerHTML="<span class='red'>Le pseudo est invalide car trop court</span>";
    		$("pseudo").focus();
    		alert("ici1");
    	}
    	else
    	{
    		alert("ici2");
    		//return false;
    	}
    alert("ici_bis = "+send);
    	if($F('pass1').length == 0 || $F('pass2').length == 0)
    	{
     
    		$("result_pass").innerHTML="<span class='red'>Vous devez saisir 2 fois le meme mot de passe</span>";
    		$("pass1").focus();
    		$("pass1").value='';
    		$("pass2").value='';
    		alert("ici3");
    	}
    alert("ici4");
    	if($F('pass1') != $F('pass2'))
    	{
    		$("result_pass").innerHTML="<span class='red'>Vous avez saisi 2 pass diff&eacute;rents</span>";
    		$("pass1").focus();
    		$("pass1").value='';
    		$("pass2").value='';
    alert("ici5");
    	}
    	if($F('age')<18)	
    	{
     
    		$("result_age").innerHTML="<span class='red'>Vous devez etre majeur pour vous inscrire sur ce site</span>";
    		$("age").focus();
     
    	}
    	if($('sexe_m').checked==false && $('sexe_f').checked==false)
    	{
     
    		$("result_sex").innerHTML="<span class='red'>Choisissez votre sex</span>";
    		//$("nickname").focus;
     
    	}
    	if(!document.getElementById('id_47').checked)
    	{
     
    		$("result_charte").innerHTML="<span class='red'>Vous devez accepter la charte</span>";
    		document.formulaire.id_47.focus();
     
    	}
    	alert("return send= "+send);
    return send;
     
     
    }
    Mais la fonction sumbit le form entièrement vide toujours après ici_bis
    Que je mette ou pas un pseudo d'ailleur il l'envoi dans tous les cas.

  6. #6
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    pass1 et pass2 sont bien des ids de champs (pas les noms) ?
    Tu peux poster ton formulaire complet ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Voici ma page register.php complète
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
     
    <?PHP
    if(@$_SESSION['connect']=="on")
    {
    ?>
    	    <script type="text/javascript">charger_page("index.php?p=actu");</script>
           <?php
    }
    ?>
     
    <style>
    div.formulaire
    {
    margin:0 auto;
     
    width:600px;
     
    background-color:#f9e8f9;
    }
    .formulaire h1
    {
    background:url("./img/header_profile_f.png") no-repeat;
    width:600px;
    height:60px;
    color:white; 
    font-size:14px;
    text-align:center;
    padding-left:10px;
    padding-top:5px;
    }
    td.result
    {
    	width:500px;
     
    	font-weight:bold;
     
    	text-align:left;
     
    }
     
    td.info
    {
    	width:200px;
    	background-color:#FCF;
    	color:#609;
    	text-align:left;
    	border-bottom:1px dotted white;
    }
    span#result_name
    {
    	border:1px solid black;
    	width:100px;
    	height:20px;
    	background-color:blue;
    	float:right;
    }
    input.format
    {
    	background-color:#FCF;
    	border:1px solid #8a0068;
    }
    </style>
    <div class="formulaire">
    <h1>Fiche d'inscription </h1>
     
    <FORM name="formulaire" ACTION="index.php?p=valid_inscription" METHOD="POST" onsubmit="return validInscription();">
    <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="10">
    <tr>
     
    	<td class="entete"> Pseudo&nbsp;<span class=obli>*</span></td>
    	<td align=left>
        	<span> <input type="text"   size="20" maxlength="20" id="pseudo"   name="pseudo" value='' class="format" ></span>    
            <!-- <span id="loader_pseudo" style="display:none"><img src="./img/ico/loader2.gif" alt="loader" /></span> -->
        </td>
        <td class="result" id="result_name">
     
        </td>
    </tr>
     
    <tr>
    	<td class="entete"> Passe&nbsp;<span class=obli>*</span></td>
    	<td><p align=left> <input type="password"   size="20" maxlength="20" id="pass1"   name="pass1" value='' class="format"></p></td>
    </tr>
     
    <tr>
    	<td class="entete"> Confirmation passe&nbsp;<span class=obli>*</span></td>
    	<td><p align=left> <input type="password"   size="20" maxlength="20" id="pass2"   name="pass2" value='' class="format"></p></td>
    </tr>
     
    <tr>
    	<td class="entete"> Age&nbsp;<span class=obli>*</span></td>
    	<td align=left><span> <input type="text"   size="20" maxlength="2" id="age"   name="age" value='18' class="format"></span>    <span id="loader"style="display:none"><img src="./img/ico/loader2.gif" alt="loader" /></span></td>
        <td class="result" id="result_age"></td>
    </tr>
     
    <tr>
    	<td valign=top class="entete"> Sexe&nbsp;<span class=obli>*</span></td>
    	<td>
    		<table width=100%>
    		<tr>
    			<td><p align=left><input type="radio"  id="sexe_m"  name="sexe" value="M">&nbsp;<img src="./img/ico/user-homme.png"  /><span class=mef>Homme</span></p></td>
    			<td><p align=left><input type="radio"  id="sexe_f"  name="sexe" value="F">&nbsp;<img src="./img/ico/user-femme.png" /><span class=mef>Femme</span></p></td>
    		</tr>
    		</table>
    	</td>
       <td class="result" id="result_sex"></td>
    </tr>
     
    <tr>
    	<td colspan="2">
            <p align=left>
                <input type="checkbox" name="id_47" id="id_47" value="accepte">&nbsp;
                <span class=mef>
                	J'ai pris connaissance des r&egrave;gles de fonctionnement et je m'engage &agrave; les respecter.  
                </span>
            </p>
    	</td>
        <td class="result" id="result_charte"></td>
    </tr>
     
    <tr>
    	<td colspan=2>&nbsp;</td>
    </tr>
     
    <tr>
    	<td colspan=2>
    		<table width=100%>
     
                	<tr>			
     
    			<td align=left width=50%><input style="border:1px solid #ff00c6; background-color:#8a0068; color:#fcf;" type="submit" name="valider" value="Valider votre inscription"  ></td>
     
    			</tr>
    		</table>
    	</td>
    </tr>
     
    <tr>
    	<td colspan=2 align=left><span class=obli>Les champs sont tous obligatoires</span></td>
    </tr>
    </table>
    </form>
    </div>

  8. #8
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    il n'y a pas dans le html envoyé d'element d'id result_pass

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    arf effectivement :s
    je crois que tu as mis le doigt sur le problème car je viens de rajouter
    <td class="result" id="result_pass">
    et ça semble passer par tous les alert() et le form n'est plus envoyé !

    merci

Discussions similaires

  1. Fonction Javascript qui ne s'exécute pas
    Par bubuche007 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 25/01/2007, 11h17
  2. Fonction javascript qui marche qu'une fois sous Firefox
    Par ns_deux dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/08/2006, 10h38
  3. Réponses: 4
    Dernier message: 09/08/2006, 10h41
  4. fonction javascript qui convertit 1 page web(html) en pdf!!
    Par allaoua dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/02/2006, 23h59
  5. fonction javascript qui rassemble une date
    Par Dizystorm dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/12/2004, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo