Forum Programmation.web jQuery : comment sélectionner tout le texte contenu d'un <table> ?

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
0
8
jan.
2015

Ceci ne fonctionne pas :(
Est-ce correcte ?

    <script>
        $(document).ready(function() {
            $("#tabselect").click(function () {
                $( "#prisontab" ).select();
            })
        });
    </script>

    <a class="button" id="tabselect">Sélectionner</a>
    <table id="prisontab">
        <caption>La liste...</caption>
        <thead>
            <tr>
                <th>id</th>
                <th>NOM</th>
                <th>Prénom</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <th>201</th>
                <th>BILLY</th>
                <th>Joe</th>
            </tr>
            <tr>
                <th>104</th>
                <th>YOHMAN</th>
                <th>Pierr</th>
            </tr>
        </tbody>
    </table>

J'ai peur que le problème soit que la sélection se fasse effectivement durant une fraction de seconde mais que le fait du clic la fasse perdre (traité ensuite), où un truc du genre…

Le but est de faciliter le copier coller (vers un tableur par exemple).

Merci d'avance car je cherche depuis de nombreuses heures et je tourne en rond sur le web :(

  • # select() n’est pas fait pour ça

    Posté par  . Évalué à 2.

    Pour sélectionner du contenu en-dehors d’une zone de saisie, il faut utiliser les Range et les selectionRange.

    <script>
      $(document).ready(function() {
        $("#tabselect").click(function (event) {
          var range = document.createRange (); // on crée un Range vide
          range.selectNodeContents ($( "#prisontab" )[0]); // on lui ajoute le contenu de la table
          var selection = window.getSelection (); // selection représente ce qui est sélectionné dans la fenêtre
          selection.removeAllRanges (); // on désélectionne tout
          selection.addRange(range); // et on sélectionne la table
        })
      });
    </script>
    • [^] # Re: select() n’est pas fait pour ça

      Posté par  (site web personnel) . Évalué à 1.

      Merci beaucoup :)

      Voici ma fonction actuelle :

      $("#btnselect").click(function () {
        var selection = window.getSelection ();
        selection.removeAllRanges ();
        var range_head = document.createRange ();
        range_head.selectNodeContents ($( "#thetable > thead" )[0]);                      
        selection.addRange(range_head);
        var range_body = document.createRange ();
        range_body.selectNodeContents ($( "#thetable > tbody" )[0]);
        selection.addRange(range_body);
      })

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.