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 :

onclick et ondblclick sur même élément : le premier est appelé lors du double clic


Sujet :

JavaScript

  1. #1
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut onclick et ondblclick sur même élément : le premier est appelé lors du double clic
    Bonjour, j'ai un td qui possède deux attribut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="alert('simple click');"
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ondblclick="alert('double click');"
    Je suis sous ie 7 (évidemment c'est ma boite qui choisis ce navigateur pas moi) et l’évènement onclick est appelé lors du double clique.

    Ma question: comment faire pour que seul l’évènement ondblclick soit appelé lors d'un double clic ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Une tempo sur l'effet du simple click ? ^^
    Du genre :

    HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button onclick="click_simple()" ondblclick="click_double()">
    (en supposant un bouton par exemple mais ça n'a bien sûr pas d'importance pour le problème posé)

    JS :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var meche;// pour la métaphore... allumer/éteindre la mèche ^^
    function click_simple() {
       if (!meche)// pour ne pas lancer la fonction en doublon/triplon/etc.
          meche = setTimeout(function() {
             alert("simple clic");
          }, 500);// une demi-seconde par exemple mais à ajuster probablement
       }
    }
     
    function click_double() {
       if (meche) clearTimeout(meche);// pschit.
       alert("double clic");
    }

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    Citation Envoyé par skeud
    Je suis sous ie 7 (évidemment c'est ma boite qui choisis ce navigateur pas moi) et l'evenement onclick est appelé lors du double clique.
    ce le même problème sur TOUS les navigateurs.

    Attention
    à l'effet pervers d'un dbclick qui n'est autre que 2 simples click, la fonction mise sur le simple click peut être appelé 2 fois, il convient donc de bloquer celle ci.

    Je te propose une petite variante, le principe étant le même que celui d'écrit par RomainVALERI
    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
    <!DOCTYPE html>
    <html>
    <head>
    <title>[...]</title>
    <script type="text/javascript">
    var iTimer, bDouble;
    function fctClick(){
      bDouble = false;
      iTimer = setTimeout( function(){
        if( !bDouble){
          alert( 'fctClik');
        }
      }, 250);
    }
    function fctDbClick(){
      bDouble = true;
      clearTimeout( iTimer);
      alert( 'fctDbClik');
    }
    </script>
    </head>
    <body>
    <div style="border:1px solid black; width:200px; height:50px;"
      onclick = "fctClick();"
      ondblclick = "fctDbClick();">
      Test
    </div>
    </body>
    </html>
    Dernière petite remarque, ce n'est quand même pas très ergonomique que de mettre un onclick et ondbclick sur un même élément!

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    [variante proposée par NoSmoking]
    Oui, je pense que techniquement il est plus souhaitable de ne gérer qu'un seul événement (ici le clic) j'aime bien l'amélioration proposée.
    Citation Envoyé par NoSmoking Voir le message
    Dernière petite remarque, ce n'est quand même pas très ergonomique que de mettre un onclick et ondbclick sur un même élément!
    Je n'y avais pas pensé spontanément mais je suis là aussi d'accord avec NoSmoking ^^

    Il y a quelques contextes qui peuvent justifier (au moins partiellement) ce choix mais c'est rare... (sur mobile, vu le manque d'espace disponible peut-être ? et encore... le double clic tactile... je n'ai pas de smartphone mais rien que l'idée me glace d'effroi )

  5. #5
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Merci pour vos réponses, mais finalement j'ai solutionné mon problème, en fait la problématique était la suivante:

    J'avais une case de tableau qui devait se colorer en vert lors du clique (pour signaler une personne présente) et en rouge lorsque cette personne n'est pas présente.
    Je voulais donc lors du clic: personne présente.
    Lors du doubleclick:personne non présente.

    En fait j'ai fait avec php, un flag qui varie suivant si la personne est présente ou non, donc juste un click qui changera une valeur dans la bdd

    Je garde quand même vos réponses, on sait jamais, ça peut servir

    Merci encore et désoler du dérangement, mais comme souvant, c'est en postant notre problème sur dvp qu'on trouve la solution par nous même

  6. #6
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par skeud Voir le message
    Merci encore et désoler du dérangement, mais comme souvant, c'est en postant notre problème sur dvp qu'on trouve la solution par nous même
    Oui, ne t'inquiète pas, nous avons tous d'ores et déjà accepté de partager ce destin facétieux avec les curés, les psychanalystes et aujourd'hui même les "coaches"...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2015, 11h02
  2. [AC-2003] Message d'erreur lors du double clic sur un graphique
    Par ostrich95 dans le forum IHM
    Réponses: 3
    Dernier message: 26/05/2014, 15h49
  3. 2 ondblclick sur une même ligne, en cours circuiter 1
    Par lodan dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/06/2008, 14h00
  4. travaillez sur des élément ayant le même id
    Par pierreonxbox dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/06/2007, 17h29
  5. onclick sur deux éléments superposés et IE6
    Par sovitec dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/12/2005, 13h56

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