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 :

Insérer un bouton dans une colonne en fonction d'une autre colonne


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Par défaut Insérer un bouton dans une colonne en fonction d'une autre colonne
    Bonjour à tous, je suis profane en javascript et pour mon travail je dois insérer un bouton dans une colonne action, cette colonne action ne doit s'afficher qui si dans mon tableau
    la colonne site actuelle comporte le mot magasin (voir fichier ci-joint)

    j'ai récupéré le code ci dessous pour afficher un bouton qui s'appuie sur $("td.call_no > a").each(function (index) { (je bosse en bibliothèque sur des ouvrages et certains ouvrait ont une référence alphanumérique pour signaler le document. J'aimerai transformer ce code pour n'afficher le bouton que quand celui comporte l'info magasin dans la colonne site actuel et que la colonne Date de retour prévue soit vide, mais j'avoue que je me casse un peu les dents, j'arrive à afficher des boutons mais qui ne répondant pas à mes besoins, dans l'image ci-dessous, il ne devrait y avoir qu'un seul bouton celui du bas, est ce que quelqu'un peut m'aider merci d'avance.


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    $(document).ready(function () {
       function GetURLParameter(sParam) {
          var sPageURL = window.location.search.substring(1);
          var sURLVariables = sPageURL.split("&");
          for (var i = 0; i < sURLVariables.length; i++) {
             var sParameterName = sURLVariables[i].split("=");
             if (sParameterName[0] == sParam) {
                return sParameterName[1];
             }
          }
       }
     
     
     
       if (borrowernumber) {
          var pathname = window.location.pathname;
          if (pathname.search(/opac-detail.pl/)) {
             $("#item_holds").after("<th class='sorting-disable' rowspan='1'   colspan='1'>Action</th>");
     
             $("td.call_no > a").each(function (index) {
                $(this).parent().first().nextAll().last().after("<td></td>");
                var href = $(this).attr("href");
                var regex = /itemnumber=([0-9]+)#holdings/;
                var match = regex.exec(href);
                var itemnumber = match[1];
                var target_cell = $(this).parent().first().nextAll().last();
                var id = "dialog-" + itemnumber;
                var biblionumber = GetURLParameter("biblionumber");
                $.getJSON("/api/v1/contrib/iwt/item/" + itemnumber + "/opac-info", function (iwantthis) {
                   var button = "";
                   if ("geturlopac" in iwantthis) {
                      var requestdialogid = "requestdialog" + itemnumber;
                      button = "<a class='btn btn-primary' href='" + iwantthis.geturlopac + "'><i class='fa fa-book'></i> Demander le document</a>";
                   }
                   button += "<button type='button' class='btn btn-secondary' data-dismiss='modal'>Fermer</button>";
                   var modaldialog = "<div class='modal fade' id='" + id + "' tabindex='-1' role='dialog' aria-labelledby='modal" + id + "' aria-hidden='true'>";
                   modaldialog += "<div class='modal-dialog'  role='document'>";
                   modaldialog += "<div class='modal-content'>";
                   modaldialog += "<div class='modal-head'>";
                   modaldialog += "<h5 class='modal-title'>Comment obtenir ce document</h5>";
                   modaldialog += "</div>";
                   modaldialog += "<div class='modal-body'>";
                   modaldialog += "<p>" + iwantthis.message + "</p>";
                   modaldialog += button;
                   modaldialog += "</div></div></div></div>";
                   $(target_cell).append("<a class='btn btn-default btn-xs' data-toggle='modal' data-target='#" + id + "' title='Obtenir'><i class='fa fa-hand-o-left'></i> Obtenir</a>" + modaldialog);
                   if (myLocation.match("Magasin")) {
                      $(target_cell).append("<a class='btn btn-default btn-xs' id='mybtn'  title='Plop'><i class='fa fa-hand-o-left'></i> Plop</a>" + modaldialog);
                   }
                   $("#mybtn").click(function () {
                      var biblionumber = GetURLParameter("biblionumber");
                      alert("requete envoyé: " + biblionumber);
                      $.getJSON("/api/v1//contrib/wrm/request?biblionumber=" + biblionumber + "&type=plop&itemnumber=" + itemnumber + "&branchcode=IEP", function (request) {});
                   });
                });
             });
          } else if (pathname.search(/opac-stack-request.pl/)) {
             $.getJSON("/api/v1/contrib/wrm/opac-request?biblionumber=[% biblionumber %]&itemnumber=[%itemnumber %]&branchcode=IEP", function (request) {
                if (request.state == "success") {
                   $("modaltitle").append("Le document est bien réservé pour vous");
                   $("modalmessage").append("Vous pourrez aller le chercher bientôt à la banque");
                } else {
                   $("modaltitle").append("Une erreur s'est produite :");
                   $("modalmessage").append("Erreur :" + request.error + "<br/>Vous pouvez vous adresser à la banque de la bibliothèque pour régler ce problème.");
                }
                $("#dialogresult").modal({ show: true });
             });
          }
       } else {
          var pathname = window.location.pathname;
          if (pathname.search(/opac-detail.pl/)) {
             if (biblionumber) {
                $("#has-search-query").val("q=sn:" + biblionumber);
             }
             $("#item_holds").after("<th class='sorting-disable' rowspan='1'   colspan='1'>Action</th>");
             $("td.call_no > a").each(function (index) {
                $(this).parent().first().nextAll().last().after("<td><a class='btn btn-default btn-xs' data-toggle='modal' data-target='#loginModal' title='Obtenir'><i class='fa fa-hand-o-left'></i> Obtenir</a></td>");
             });
          }
       }
    });
    Images attachées Images attachées  

  2. #2
    Membre averti
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Par défaut
    Bonjour, je permets de relancer le sujet car je galère vraiment à afficher mon bouton avec les conditions expliquées ci-dessus, y aurait il quelqu'un pour me donner quelques conseils?

    Merci d'avance

  3. #3
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Salut à tous,

    Solution JQuery plus simple pour insérer des boutons une fois le tableau affiché et qui pourrait peut-être convenir ?

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    <style>
        table {
            border-collapse: collapse
        }
     
        td {
            border: 1px solid #009AFE;
            padding: 10px;
        }
     
        td:nth-of-type(7) {
            text-align: center;
        }
     
        th {
            border: 1px solid #009AFE;
            padding: 5px;
            width: 150px;
            color: #1781f2;
        }
     
        button {
            height: 25px;
            width: 100px;
            cursor: pointer;
            color: #37b7d5;
            font-weight: bold;
        }
     
        button::before {
            content: "\01F453";
        }
    </style>
     
    <table style=" border-collapse: collapse">
        <tr>
            <th>Type de document</th>
            <th>Site actuel</th>
            <th>Cote</th>
            <th>Statut</th>
            <th>retour</th>
            <th>Réservation</th>
            <th>Action</th>
        </tr>
        <tr>
            <td>Prêt ouvrages</td>
            <td>Bibliothèque de Sciences Po Lyon niveau 1</td>
            <td>OUV 19915</td>
            <td>Disponible</td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>Test Magasin</td>
            <td>Bibliothèque de Sciences Po Lyon Magasin</td>
            <td>OUV 19914</td>
            <td>Disponible</td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>Prêt ouvrages</td>
            <td>Bibliothèque de Sciences Po Lyon niveau 2</td>
            <td>OUV 19913</td>
            <td>Disponible</td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>Test Magasin</td>
            <td>Bibliothèque de Sciences Po Lyon Magasin 2</td>
            <td>OUV 19912</td>
            <td>Disponible</td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>Test Magasin</td>
            <td>Lyon magasin-vert</td>
            <td>OUV 19911</td>
            <td>Disponible</td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </table>

    Code JQuery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $('table tr').each(function () {
        var texte = $(this).children('td:nth-of-type(2)').text().toLowerCase();// On récupère dans une variable le texte du td en minuscule
        if (texte.match('(?:magasin)')) {
            $(this).children('td:nth-of-type(7)').append('<button> Obtenir</button>'); // Si oui, on ajoute un bouton dans le td correspondant à la ligne du tableau
        }
    });
     
    $('button').on('click', function () {
        console.log("N° de l'index: " + $('button').index(this)); //l'index du bouton
    })

  4. #4
    Membre averti
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Par défaut
    Merci beaucoup pour ta solution, je regarde cela.

Discussions similaires

  1. Insérer un bouton dans une cellule datagridview
    Par hanadakia dans le forum VB.NET
    Réponses: 6
    Dernier message: 05/06/2018, 16h57
  2. insérer un bouton dans une feuille excel lié à une fonction vba
    Par thierry_b dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/06/2009, 12h14
  3. Cliquer sur un bouton dans une autre application
    Par FredericB dans le forum C++Builder
    Réponses: 16
    Dernier message: 10/05/2008, 17h23
  4. Réponses: 1
    Dernier message: 27/02/2008, 10h24
  5. JTable : comment insérer un bouton dans une cellule ?
    Par donyas dans le forum Composants
    Réponses: 2
    Dernier message: 08/08/2006, 15h54

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