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

  1. #1
    Membre régulier
    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
    Points : 123
    Points
    123
    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
    Points : 91 220
    Points
    91 220
    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>

  3. #3
    Membre régulier
    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
    Points : 123
    Points
    123
    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 régulier
    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
    Points : 84
    Points
    84
    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 éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    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 régulier
    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
    Points : 84
    Points
    84
    Par défaut
    C'est tout a fait ça. Merci pour la correction

  7. #7
    Membre régulier
    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
    Points : 123
    Points
    123
    Par défaut
    Merci

    Par contre j'ai l'impression que la fonction javascript click() ne marche pas sous firefox (en effet la solution marche sous IE mais pas sous FF).

    (j'ai tenté une simulation via javascript avec document.getElementBy('monId').click() et aussi avec jQuery $(caller).click() ) mais peine perdue ça ne fonctionne pas sous FF (v3 je précise).

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

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par lifty Voir le message
    Merci

    Par contre j'ai l'impression que la fonction javascript click() ne marche pas sous firefox (en effet la solution marche sous IE mais pas sous FF).

    (j'ai tenté une simulation via javascript avec document.getElementBy('monId').click() et aussi avec jQuery $(caller).click() ) mais peine perdue ça ne fonctionne pas sous FF (v3 je précise).
    Juste en passant mais sans avoir eu le temps de vérifier : tu as envisagé fireEvent ?

  9. #9
    Membre régulier
    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
    Points : 123
    Points
    123
    Par défaut
    Non, mais je vais me renseigner ^^ merci du tuyau !

    Un premier lien utile

  10. #10
    Membre régulier
    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
    Points : 123
    Points
    123
    Par défaut
    J'ai testé mais rien de concluant chez moi :/

    Du coup j'ai opté pour une solution qui est peut être une usine à gaz .. à voir.

    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
    <table>
    <tr >
    <td onclick='visualiserLien1("lien1")'>
    <a id='lien1' href='ulr1'/>
    </td>
    <td  onclick='visualiserLien1("lien1")'></td>
    <td  onclick='visualiserLien1("lien1")'></td>
    <td  onclick='visualiserLien1("lien1")'></td>
    <td  onclick='visualiserLien1("lien1")'></td>
    <td  onclick='visualiserLien2("lien2")'>
    <a id='lien2' href='ulr2'/>
    </td>
    </tr>
    </table>
    <script type="text/javascript">
    		function visualiserDoc(idLien){
    			window.location = $('#'+idLien).attr('href');
    		}
     
    		function visualiserPli(idLien){
    			window.location = $('#'+idLien).attr('href');
    		}
    </script>
    Je ne simule plus un click sur mon lien, je redirige carrement mon application avec l'url issu de mon lien. (Je laisse quand même le lien au cas où le javascript ne serait pas activé)

  11. #11
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function visualiserDoc(idLien){
    	location.href = $('#'+idLien).attr('href');
    }
     
    function visualiserPli(idLien){
    	location.href = $('#'+idLien).attr('href');
    }

  12. #12
    Membre régulier
    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
    Points : 123
    Points
    123
    Par défaut
    Merci bovino

    ça marche aussi comme ça et c'est peut être mieux (je te fait confiance)

+ 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