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

jQuery Discussion :

Récupérer la ligne et la cellule cliquées


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    student
    Inscrit en
    Janvier 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : student

    Informations forums :
    Inscription : Janvier 2019
    Messages : 66
    Par défaut Récupérer la ligne et la cellule cliquées
    Bonjour

    j'ai un tableau dont les lignes ont été remplis par une boucle php/twig. Jusque là tout va bien.
    Les cellules que je souhaite rendre cliquable possède la classe selectable.

    Je voudrais que lorsqu'on clique sur une de ces cellules, on récupère des infos qui appartiennent à la ligne mais aussi le nom de la colonne auquelle appartient la cellule.

    j'arrive à récupérer les champs d'une ligne (mais toute la ligne est cliquable) et je n'arrive pas à récupérer le nom du champs.
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $(document).ready(function () {
                $("tr").click(function () {
                    //on récupère la ligne sélectionnée
                    var ligne = $(this);
     
     
     
                        selectLine(ligne);
     
     
                })
            })


    Toutes les cellules d'une colonne portent la même classe.


    J'espère que j'ai été clair.

  2. #2
    Membre confirmé
    Femme Profil pro
    student
    Inscrit en
    Janvier 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : student

    Informations forums :
    Inscription : Janvier 2019
    Messages : 66
    Par défaut récupérer le nom du champs cliqué
    J'ai une partie de ma solution, mais je n'arrive toujours pas à récupérer le nom de la colonne du champs cliqué

    La j'ai bien les valeurs de la ligne qui m'intéressent, mais pas le nom de la cellule cliquée.

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $("tr").click(function () {
                    //L'index permet de récupérer le contenu de la cellule de la ligne
                        var anneeTest = $(this).find("td").eq(0).html(); 
                        var moisTest = $(this).find("td").eq(1).html();
     
                        selectLine(anneeTest, moisTest);
     
                })

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Essaye avec un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $("tr").click(function (event ) {
                    //L'index permet de récupérer le contenu de la cellule de la ligne
                        var anneeTest = $(this).find("td").eq(0).html(); 
                        var moisTest = $(this).find("td").eq(1).html();
                        var clickedCell=$(event.target);
                        console.log(clickedCell.text();
     
                        selectLine(anneeTest, moisTest);
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre confirmé
    Femme Profil pro
    student
    Inscrit en
    Janvier 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : student

    Informations forums :
    Inscription : Janvier 2019
    Messages : 66
    Par défaut
    Je suis intrigué par ce qu'il me dit si je fais

    Code JS : 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
     
    $(document).ready(function () {
                $("tr").click(function (event) {
                    //L'index permet de récupérer le contenu de la cellule de la ligne
                        var annee = $(this).find("td").eq(0).html();
                        var mois = $(this).find("td").eq(1).html();
     
     
                        var cell = $(event.target);
                        var cellSelect = cell.getAttribute('selectable');
                        console.log(cellSelect);
     
     
    //                    if(cell.classList.contains("selectable")){
                            selectLine(annee, mois);
    //                    }
     
     
                })
            })

    Pour cell.getAttribute : il me dit que ce n'est pas une fonction

    et si je test le if ... il me dit que cell est indefini
    mais j'ai bien var cell = $(event.target)

    Si je comprends bien il ne sais pas qu'elle est la cellule cliquée donc il n'est pas capable de me donner son attribut.

  5. #5
    Membre confirmé
    Femme Profil pro
    student
    Inscrit en
    Janvier 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : student

    Informations forums :
    Inscription : Janvier 2019
    Messages : 66
    Par défaut click moyennement efficace
    Par contre avec
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $("td").click(function () {
                            var cell = $(this).attr('class');
                            console.log(cell);
                        })

    Il arrive bien à me trouver les classes de ma cellule MAIS que SI je fais 2 ou 3 cliques la première fois ... mais après il fonctionne dès le premier clique.

    C'est comme s'il avait un retard à l'allumage.

  6. #6
    Membre confirmé
    Femme Profil pro
    student
    Inscrit en
    Janvier 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : student

    Informations forums :
    Inscription : Janvier 2019
    Messages : 66
    Par défaut Il reste mon retard à l'allumage
    Bon ça y est, presque, j'ai bien mes classes de la cellule cliquée et seul les cellules avec la classe selectable sont cliquables.

    Code JS : 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
     
    $(document).ready(function () {
                $("tr").click(function (event) {
                    //L'index permet de récupérer le contenu de la cellule de la ligne
                    var annee = $(this).find("td").eq(0).html();
                    var mois = $(this).find("td").eq(1).html();
     
     
                    $("td").click(function () {
                        var cell = $(this).attr('class');
                        console.log(cell); //retourne bien les classes de ma cellule sélectionnée
     
                        if($("td").hasClass("selectable")){
                            console.log("clique ok");
                        }
                    })
                })
            })

    mais il me reste mon retard à l'allumage ...
    et à envoyer le nom de la classe de ma cellule

  7. #7
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    c'est pourtant si simple, en simple javascript...

    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
    <!DOCTYPE html>
    <html lang="fr">
    head>
      <meta charset="UTF-8">
      <title>Tableau JS</title>
      <style>
         td { border:1px solid grey; width: 2em; text-align: center; cursor: pointer; }
         td:hover { background-color: cadetblue; }  
      </style>
    </head>
    <body>
      <table id="maTable">
        <tbody>
          <tr> <td>a</td> <td>b</td> <td>c</td> <td>d</td> </tr>
          <tr> <td>e</td> <td>f</td> <td>g</td> <td>h</td> </tr>
          <tr> <td>i</td> <td>j</td> <td>k</td> <td>l</td> </tr>
          <tr> <td>m</td> <td>n</td> <td>o</td> <td>p</td> </tr>
        </tbody>
      </table>
      <p id="info">cliquer sur une case...</p>
    <script>
      maTable.onclick=e=>
        {
        if (!e.target.matches('td')) return
     
        let eTD = e.target
          , eTR = eTD.parentNode
          ;
        info.textContent = `Ligne= ${eTR.rowIndex}, colonne= ${eTD.cellIndex}, contenu= ${eTD.textContent}`
        }
    </script>
    </body>
    </html>

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

Discussions similaires

  1. [XL-2010] Récupérer la ligne d'un bouton cliqué
    Par Thugann dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2015, 11h01
  2. Réponses: 1
    Dernier message: 21/08/2011, 08h01
  3. [QtGui] Récupérer la ligne contenant le bouton cliqué
    Par Jiyuu dans le forum PyQt
    Réponses: 2
    Dernier message: 30/06/2011, 13h20
  4. Problème EXCEL : Récupérer la ligne d'une cellule active
    Par Kok1k1du dans le forum C++Builder
    Réponses: 10
    Dernier message: 17/11/2008, 12h04
  5. Réponses: 9
    Dernier message: 09/03/2007, 20h44

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