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 :

Pourquoi le "return true;" dans un onclick ? [Débutant(e)]


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 19
    Par défaut Pourquoi le "return true;" dans un onclick ?
    Pourquoi mettons-on parfois un "return true;" dans un événement comme onclick par exemple ? Comme ici extrait d'un formulaire HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input disabled="disabled" value="tester l'exemple" onclick="testExemple1();this.disabled=true;return true;" type="button">
    Est-ce toujours nécessaire ? Sinon, quand est-ce nécessaire ?

    D'avance merci pour votre réponse.

  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
    Billets dans le blog
    20
    Par défaut
    En réalité, le return true est rarement utile. C'est surtout le return false qui est utilisé dans une situation très précise : empêcher le comportement par défaut de l'événement.
    Tu rencontreras le plus souvent cette syntaxe sur des liens :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://developpez.com" onclick="maFonction();return false;">Cliquer</a>
    Ici, lorsque l'on clique, maFonction() est exécuté puis le return false permet ne pas suivre le lien, qui pourra donc servir de solution alternative au cas où JavaScript est inaccessible par JavaScript (désactivé, ce qui est rare ou non pris en charge).
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    de façon générale sur les gestionnaire d'événements (onclick onchange etc...)
    si le gestionnaire retourne true l'événement est propagé sinon il est bloqué.

    ce qui permet de controler l'action associé
    sur un aHref le click active le lien un activera le lient après la gestion de l'événement et un false n'activera pas le lien. sur un formulaire le true poste le formulaire et le false empêche le formulaire d'être envoyé.

    enfin sur le code je préfère utiliser la fonction pour contrôler les événement que d'ajouter un retrun true ou false dans la balise.
    il ne faut pas oublier que le code d'un gestionnaire d'événement et transformé en fonction par le navigateur.

    j'écris donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function maFunction(){
       //traitement ...
       return resulta
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="..." onClick="retrun maFunction()">link</a>
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    document.getElementById('myLink').onclick = function(){
       //traitement ...
       return resulta
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="..." id="myLink">link</a>
    ainsi c'est la fonction qui contrôle l'action associé à l'événement.

    Attention pas de return = return true
    return null, return undefined, et return false sont équivalent (je crois que return 0 aussi)
    et toute autre valeur est un return true.


    A+JYT

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    et soit dit en passant, Bobabar, une fonction javascript retourne toujours true par défaut;
    donc, les 3 écritures suivantes sont équivalentes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function pas_in(dispensable){
      for(um in dispensable){
        developpez++
      };
      return true
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function pas_in(dispensable){
      for(um in dispensable){
        developpez++
      };
      return
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function pas_in(dispensable){
      for(um in dispensable){
        developpez++
      };
    }

  5. #5
    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
    Billets dans le blog
    20
    Par défaut
    Euh... non JT, une fonction retourne undefined par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function retour1(){}
    function retour2(){return;}
    function retour3(){return true;}
    alert(retour1() + ' - ' + retour2() + ' - ' + retour3());
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    mouais, j'avoue, pas très bien expliqué (pédagogiquement...);
    mais dans la pratique, si false n'est pas explicitement déclaré, l'événement suit son cours;

    mais tu as grandement raison pour true / undefined;

    bref, javascript ignore les réponses de normand

Discussions similaires

  1. [MySQL] Pourquoi dois-je utiliser des "quotes penchées" dans mes requêtes?
    Par v4np13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/02/2008, 23h23
  2. Variable avec quotes(simple ou double)dans un input
    Par -Neo- dans le forum Langage
    Réponses: 1
    Dernier message: 25/06/2007, 11h23
  3. Réponses: 15
    Dernier message: 21/02/2007, 17h29

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