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] superposer un OnClick <td> à un OnClick <


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut [onClick] superposer un OnClick <td> à un OnClick <
    Bonjour à tous,

    je développe actuellement une appli asp.net, une page de cette appli représente un tableau-bilan mensuel.

    A chaque jour du mois sont associées 2 lignes, dont voici le squelette simplifié :

    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
     
    ...
    <tr onClick="ChangeUrl(url)">
      <td rowspan="2">X <!--le num du jour--></td>
      <td>Total1</td>
      <td>Total2</td>
      ...
      <td onClick="Bascule(jourX)">Details</td>
    </tr>
    <tr id="jourX" style="display:none">
      <td>Détail AAA de 1<br />Détail BBB de 1 ...</td>
      <td>Détail AAA de 2<br />Détail BBB de 2 ...</td>
      ...
      <td>&nbsp;</td> <!-- cellule vide car sous la cellule 'Details'-->
    </tr>
    ...
    Le principe est simple, ma première ligne affiche des valeurs totales + un bouton permettant d'afficher/masquer la seconde ligne, qui elle contient des sous-données.
    Ce que je souhaite, c'est de pouvoir en cliquant sur ma première ligne aller sur une autre page de mon appli ('onClick' du <tr>).

    Malheureusement - ce qui est malgré tout logique - en procédant ainsi, lorsque je clique sur le bouton "détails", l'évènement onClick du <td> survient, suivi de l'évènement onClick du <tr>. Ma ligne invisible s'affiche donc, mais je suis instantanément redirigé vers l'autre page...

    Existe-t-il un moyen de dire à la fin du premier évènement qu'il faut abandonner la gestion du second ? J'ai pour l'instant essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <td onClick="Bascule(jourX);return false">
    <td onClick="Bascule(jourX);void">
    <td onClick="Bascule(jourX);window.event.returnValue = false">
    ...mais sans succès.

    J'ai toujours la solution de secours d'affecter le onClick'changeURL(url)' à ma première cellule, mais ça ne me satisfait pas trop... et, détail important, je ne peux pas accéder à ma variable 'url' dans les cellules contenant les totaux, limitation due au mécanisme asp.net utilisé (pour les connaisseurs, c'est parce que j'utilise un repeater qui m'affiche les jours, et pour chaque jour un nouveau repeater qui m'affiche les valeurs => au sein du 2e repeater, on ne peut pas accéder aux variables du 1er repeater...)

    Voilà, sur de merci d'avance pour votre aide !

  2. #2
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 161

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut
    Merci beaucoup poof65, c'est exactement ce que je cherchais !

    Pour les éventuels intéressés, la ligne à ajouter à la fin de l'exécution du premier évènement est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.event.cancelBubble = true
    - false => valeur par défaut, l'évènement est propagé normalement
    - true => l'évènement n'est pas transmis à l'event handler suivant (ici mon 2e onClick)

    Enfin encore merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    attention, tout ceci est exclusif IE...

  5. #5
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Par défaut
    je crois bien qu'il y a la même chose pour le moteur gecko mais je me souviens plus de la syntaxe

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut
    Effectivement j'avais cru comprendre, en regardant la doc de la MSDN, que je m'aventurais dans du "IE only" ; enfin pour mon cas, ça ne m'apportera (a priori) pas de souci, étant en contexte d'intranet 100% IE.

    Quoique après petite recherche, il semblerait effectivement que Gecko utilise aussi cancelBubble :

    Objet Event du DOM de Gecko

    A essayer donc !

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

Discussions similaires

  1. [C#] Postback à la place de onclick avec Entrée
    Par Anomaly dans le forum ASP.NET
    Réponses: 7
    Dernier message: 24/09/2004, 14h35
  2. [TListView] OnClick ? Tri ?
    Par remixtech dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/04/2003, 21h33
  3. TMenuItem.OnClick et TNotifyEvent
    Par Jacques Deyrieux dans le forum Composants VCL
    Réponses: 4
    Dernier message: 31/03/2003, 11h24
  4. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  5. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 10h31

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