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 :

2 ondblclick sur une même ligne, en cours circuiter 1


Sujet :

JavaScript

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut 2 ondblclick sur une même ligne, en cours circuiter 1
    Bonsoir,

    Dans un formulaire composé d'un tableau, j'ai mis la possibilité de double cliqué sur une ligne complète pour accéder au détail.

    J'ai besoin aussi de double cliquer sur un champ pour le modifier.

    Mais les 2 double clic s'exécute, ce qui me semble normal.

    Ce qui me donne le code source suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr ondblclick="javascript:window.location = 'mailings_maj.php?send_id=32&send_trt=Modifier'"; 
    					alt="Modifier" title="modifier">
    <td><a ondblclick="inlineMod(392, this, 'oper_date_fin', 'date','ajaxUpdOperation.php')" title="Double Cliquez pour modifier la date"> 30/05/2008</a></td>
    </tr>
    Est-il possible de cours circuiter un des 2 doubles clic ?

    En effet si inlineMod est déclencher, je voudrai bloquer le javascript:window.location.

    Merci d'avance pour vos idées
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    houla houla ...
    dans ces cas la , je passerais par un listener , et un srcElement ( ou target ) pour vérifier sur quel élément on a clické , et déclencher l'action en fonction ...
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    les événements se propagent de l'objet qui a déclenché l'événement vers l'objet ou les objets parents gérant également cet événement.

    Donc quand tu vas cliquer sur le span, le double clic va se gérer également vers le tr. Mais l'inverse ne se fera pas : si tu double-cliques sur le tr, le span ne va pas générer cet événement.

    voilà un truc : utilise un drapeau (ici dblClicSpan) qui passe à true si le tagName est un span (=double clic sur un span), comme ça lorsque le double-clic se produira sur le tr (il vient juste après celui du span), le drapeau sera à true et tu sors de la fonction (voir if (dblClicSpan)). Si le tagName est tr, le drapeau reste à false.
    Code html : 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
     
    <html>
     
    <head>
     
    <title></title>
     
    <script type="text/javascript">
    <!--
    var dblClicSpan = false;
    function doubleClic(objet)
    {
      if (dblClicSpan)
      {
        dblClicSpan = false;
        return false;
      }
     
      if (objet.tagName.toLowerCase()=="span")
      {
        dblClicSpan = true;
        fonctionSPAN();
      }
      else
      {
        fonctionTR();
      }
    }
     
    function fonctionSPAN()
    {
      document.getElementById("test").innerHTML += "dblClic sur SPAN<br>";
    }
     
    function fonctionTR()
    {
      document.getElementById("test").innerHTML += "dblClic sur TR<br>";
    }
     
    //-->
    </script>
     
    </head>
     
    <body>
     
    <table border="1">
    <tr ondblclick="doubleClic(this)">
      <td style="width:200px">
        <span ondblclick="doubleClic(this)" title="Double Cliquez pour modifier la date">
        30/05/2008
        </span>
      </td>
      <td style="width:200px">
        <span ondblclick="doubleClic(this)" title="Double Cliquez pour modifier la date">
        30/05/2008
        </span>
      </td>
      <td style="width:200px">
        &nbsp;
      </td>
    </tr>
    </table>
     
    <div id="test"></div>
     
    </body>
     
    </html>

  4. #4
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci l'Auteur,

    Explication clair et simple, adaptation aisé, cela fonctionne parfaitement.

    J'ai fait comme ceci

    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
     
    <html>
     
    <head>
     
    <title></title>
     
    <script type="text/javascript">
    <!--
    var dblClicSpan = false;
    function doubleClic(objet)
    {
    	if (dblClicSpan)
    	{
    		dblClicSpan = false;
    		return false;
    	}
     
    	if (objet.tagName.toLowerCase()=="span")
    	{
    		dblClicSpan = true;
    		return dblClicSpan;
    	}
    	else
    	{
    		return true;
    	}
    }
    </script>
     
    </head>
     
    <body>
     
    <table border="1">
    <tr ondblclick="if(doubleClic(this)) javascript:window.location = 'mailings_maj.php?send_id=32&send_trt=Modifier'"; 
    					alt="Modifier" title="modifier">
    <td><a ondblclick="if(doubleClic(this)) inlineMod(392, this, 'oper_date_fin', 'date','ajaxUpdOperation.php')" title="Double Cliquez pour modifier la date"> 30/05/2008</a></td>
     
    <td><a ondblclick="if(doubleClic(this)) inlineMod(407, this, 'oper_date_fin', 'date','ajaxUpdOperation.php')" title="Double Cliquez pour modifier la date"> 31/07/2008</a></td></tr>
    Merci encore
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    supprime le terme javascript dans la balise TR, c'est inutile (après un événement c'est toujours du javascript) et ça peut faire planter ton script.

    Utilise javascript uniquement pour les pseudo-url (appel de fonctions dans l'attribut href d'une balise a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="javascript:taFonction()">cliquez ici</a>

  6. #6
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci,

    J'ai donc un sacré nettoyage à faire maintenant, j'en ai partout.

    Allez zou, je ne savais pas quoi faire ce week-end.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bah ouvre tes pages HTML avec ton éditeur et utilise la fonction "remplacer par" En 30 secondes c'est fait

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

Discussions similaires

  1. Voir tout les onglets sur une même ligne
    Par bnreb10 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/08/2006, 11h08
  2. Décalage sur une même ligne
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/08/2006, 18h24
  3. Commandes shell sur une même ligne
    Par Asdorve dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 13/06/2006, 16h50
  4. Aligner du texte à gauche et à droite sur une même ligne ?
    Par pontus21 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/04/2005, 11h25
  5. 2 éléments sur une même ligne
    Par ben_iap dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/11/2004, 17h27

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