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 :

Return False ne fonctionne pas


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Points : 56
    Points
    56
    Par défaut Return False ne fonctionne pas
    Bonjour,

    J'ai recupéré sur ce forum une source pour limiter le nombre de checkboxs cochés à 3.

    Voici ce code :

    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
    function countCheckedCheckboxes() {
        var i, n = 0 ;
        var oElement ;
        for ( i = 0 ; i < form_profil.elements.length ; i++ ) {
            oElement = form_profil.elements[i] ;
            if ( oElement.tagName.toLowerCase( ) == "input" ) {
                if ( oElement.type.toLowerCase( ) == "checkbox" ) {
                    if ( oElement.checked == true ) {
                        n++ ;
                    }
                }
            }
        }
     
    	if(n != 3){
    		alert("Il faut choisir trois checkboxs");
    		return false;
    	} else {
    		return true;
    	}
    }
    Dans le body :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="form_profil" action="ajout_pub.php" method="post" onSubmit="countCheckedCheckboxes();">
    Lorsque le nombre de checkboxs n'est pas egal a 3, j'ai biel l'Alert mais une fois cliqué sur ok, la page suivante s'affiche, alors que ca devrait rester sur cette même page.

    Une idée ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Salut.

    Return False ne fonctionne pas

    Si return false fonctionne très bien. En revanche, reste à bien comprendre à quoi il est retourné...
    Un événement déclaré dans un attribut génère une fonction anonyme. Donc le return false de la fonction countCheckedCheckboxes est renvoyé à cette fonction anonyme et qui termine son exécution correctement. Donc le submit est bien lancé.
    Pour faire retourner false à cette fonction anonyme, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onSubmit="return countCheckedCheckboxes();"

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Points : 56
    Points
    56
    Par défaut
    merci Bovino cela fonctionne.

    Petite complication, je dois modifié ce script afin de vérifié si les champs textes associés aux checkboxs sont remplis ou non.

    Exemple :



    Voici le code correspondant :

    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
    <form name="form_profil" action="ajout_pub.php" method="post" onSubmit="return countCheckedCheckboxes();"><table width="70%" border="0"><input name="idannonce" type="hidden" value="5" /><tr><td><img src='../files/0301042037_rent_v141_s.jpg' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="4" onclick="limite_check(this.name, 3);affCache('toto4');" /><div id="toto4" style="display:none;">
              <input name="texte1" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042111_rent_v141n_j1.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="5" onclick="limite_check(this.name, 3);affCache('toto5');" /><div id="toto5" style="display:none;">
              <input name="texte2" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042130_rent_v141n_c.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="6" onclick="limite_check(this.name, 3);affCache('toto6');" /><div id="toto6" style="display:none;">
              <input name="texte3" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042155_rent_v141n_s2.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="7" onclick="limite_check(this.name, 3);affCache('toto7');" /><div id="toto7" style="display:none;">
              <input name="texte4" type="text" size="20" maxlength="80">
          </div>
    </td></tr><tr><td><img src='../files/0301042220_rent_v141n_s1.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="8" onclick="limite_check(this.name, 3);affCache('toto8');" /><div id="toto8" style="display:none;">
              <input name="texte5" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042249_rent_v141n_t.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="9" onclick="limite_check(this.name, 3);affCache('toto9');" /><div id="toto9" style="display:none;">
              <input name="texte6" type="text" size="20" maxlength="80">
          </div>...
    J'avais pensé à if(n != 6){ mais cela compte simplement les checkboxs.

    Ou ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        for ( i = 0 ; i < form_profil.elements.length ; i++ ) {
            oElement = form_profil.elements[i] ;
            if ( oElement.tagName.toLowerCase( ) == "input" ) {
                if ( oElement.type.toLowerCase( ) == "text" ) {
                    if ( oElement !=  "") {
                        n++ ;
                    }
                }
            }
    Mais cela ne fonctionne pas. Le element sert juste au checkboxs ou à tout type d'objet formulaire ?

    merci d'avance.
    Images attachées Images attachées  

Discussions similaires

  1. IE8 : return false ne marche pas
    Par teraDev dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/10/2010, 18h56
  2. Réponses: 2
    Dernier message: 20/11/2008, 10h28
  3. return confirm ne fonctionne pas sous IE7
    Par mona dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/05/2008, 21h49
  4. onclick="return false" ne fonctionne pas
    Par pcdj dans le forum ASP.NET
    Réponses: 16
    Dernier message: 13/09/2007, 15h31
  5. Return $var ne fonctionne pas ?
    Par nana1 dans le forum Linux
    Réponses: 1
    Dernier message: 15/12/2005, 18h39

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