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 :

Evénements multiples sur un <tr>


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 101
    Par défaut Evénements multiples sur un <tr>
    Bonjour la compagnie,

    Tout d'abord un exemple de ma structure :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <table>
    <tr onclick='document.getElementById('lien1').click();'>
    <td  id="colLien1"><a id='lien1' href='ulr1'/></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td  id="colLien2" onclick='document.getElementById('lien2').click();'><a id='lien2' href='ulr2'/></td>
    </tr>
    </table>

    Desiderata

    Je voudrais que si je clique sur la ligne de ma table je lance le lien1, si je clique dans la td contenant mon lien2 alors je lance le lien2 et non pas le lien1.

    Soucis:
    Sous IE7 si je clique sur n'importe sur n'importe quelle <td> de la table je simule un clic sur lien1. Si je clique sur le lien2 il s'exécute mais si je clique dans le <td id="colLien2"> alors c'est le lien 1 qui s'execute.
    Sous FF3 c'est simple rien ne marche ni les liens ni le js, en gros je ne peut lancer aucun lien.

    Bref pas cool

    Amis du jour j'ai besoin de vous !

  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
    Il faut être plus rigoureux dans l'imbrication des quotes
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <table>
    <tr onclick="document.getElementById('lien1').click();">
    <td  id="colLien1"><a id='lien1' href='ulr1'/></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td  id="colLien2" onclick="document.getElementById('lien2').click();"><a id='lien2' href='ulr2'/></td>
    </tr>
    </table>
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 101
    Par défaut
    Pardon j'ai fait ça un peu vite direct dans la balise [CODE.] Ceci dit c'est pas ça le problème ( je viens de vérifier on sait jamais )

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Par défaut
    C'est peut être normal ( pas sur ) . Comme <td> est à l'intérirur de <tr> l'evenement attaché à <tr> est prioritaire. Tu peux contourner en faisant une fonction du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function redirect( el ){
     if(el.id == 'lien2' ){
    // simuler le click sur le lien 2 
    }else{
    // simuler le click sur le lien 1 
    }
    }

    onclick devrait être changé aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <table>
    <tr id='' onclick="redirect(this)">
    <td  id="colLien1"><a id='lien1' href='ulr1'/></td>
    <td></td>
    <td  id="colLien2" onclick="redirect(this)"><a id='lien2' href='ulr2'/></td>
    </tr>
    </table>
    Bonne chance

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    tu peux également utiliser des flag : cf. cet exemple Dans l'exemple c'est avec un span contenu dans un tr et l'événement est le ondblclick, mais tu peux facilement l'adapter à tes besoins


    Le code de kodeya est bien lui aussi mais deux choses :
    • dans le code HTML un détail me chagrine :
      Code html : Sélectionner tout - Visualiser dans une fenêtre à part
      <tr id='' onclick="redirect(this)">
      le tr a un id non défini Si l'attribut est présent, mieux vaut lui donner une valeur.
    • attention
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
       
      function redirect( el ){
       if(el.id == 'lien2' ){
      // simuler le click sur le lien 2 
      }else{
      // simuler le click sur le lien 1 
      }
      }
      la fonction redirect() est appelée par un td ou un tr, or aucun de ces éléments n'a un id == 'lien2'. Peut-être que kodeya a voulu écrire :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
       
      function redirect( el )
      {
       if(el.id == 'colLien2' )
      {
      // simuler le click sur le lien 2 
      }
      else
      {
      // simuler le click sur le lien 1 
      }
      }

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Par défaut
    C'est tout a fait ça. Merci pour la correction

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

Discussions similaires

  1. question multiple sur la balise select
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2006, 17h14
  2. [VB.NET] Evènement MouseDown sur Rectangle
    Par daner06 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/02/2006, 18h31
  3. left join multiple sur grosses tables
    Par hn2k5 dans le forum Requêtes
    Réponses: 6
    Dernier message: 30/11/2005, 16h10
  4. select multiple sur plusieurs tables
    Par syl2095 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/12/2004, 15h48
  5. pointeur multiple sur un objet
    Par Arnaud-h dans le forum C++Builder
    Réponses: 9
    Dernier message: 02/06/2004, 11h33

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