2015-11-13 1 views
0

J'essaie d'obtenir la valeur d'une rangée quand je clique dedans, mais il obtient seulement la valeur de la première même si je clique dans d'autres tr, comment puis-je obtenir la valeur de la tr où je clique. Je remplis ma table avec une réponse json. voici mon code.Obtenir la valeur d'un <tr> à partir d'une table dinamic, mais je reçois seulement la valeur de la première <tr>

Voici mon code.

register.html

<table class="table table-striped table-hover table-bordered" style="width:100%" border="0" id="miembrotb"> 

JsonResponse.js

$("#buscar_paciente").click(function(e) { 
     var completo = $("#nombre").val(); 

     var input_string = completo; 
     $.ajax({  
      url: "/datospacientejson", 
      type: "POST", 
      dataType: "json", 
      data: { 
       nombre: input_string, 
       csrfmiddlewaretoken: '{{ csrf_token }}' 
      }, 
      success: function (json) { 
       var jsonResponse = eval(json); 
        $("#miembrotb").empty(); 
        $("#miembrotb").append('<tr><th>ID</th><th>NOMBRE</th><th>FECHA DE NACIMIENTO</th></tr>'); 
        $.each(jsonResponse, function (index, element) { 
         html = '<tr><td class="td1">'+jsonResponse[index]["fields"]["folio"]+'</td><td>'+jsonResponse[index]["fields"]["nombre"]+' '+jsonResponse[index]["fields"]["apellido_paterno"]+'<td>'+jsonResponse[index]["fields"]["fecha_nacimiento"]+'</td>'+'</tr>' 
         $("#miembrotb").append(html); 
        }); 
       }, 
      error: function(xhr, errmsg, err) { 
       alert(xhr.status + "ERROR EN BUSQUEDA DE INFORMACION DEL PACIENTE: " + xhr.responseText); 
      } 
     }); 
     return false; 
}); 



//ON CLICK FUNCTION 
    $("#miembrotb").click(function(){//click anywhere in a row 
    alert($(this).find("tr").html()); 
    }); 

enter image description here

+0

Pouvez-vous essayer les modifications '$ ('. Td1 ') .cliquez' puis '$ (this) .html()' cela devrait fonctionner –

Répondre

0

Vous devez attacher cliquez sur l'événement à l'élément spécifique à l'intérieur tr table avec id miembrotb

$("#miembrotb tr").click(function(){//click anywhere in a row 
     $(this).html(); 
    }); 
0

Ce que vous faites est de vérifier si un utilisateur clique sur la table entière, et non sur une ligne spécifique. De cette façon, vous ne savez pas quelle ligne a été cliquée et, par conséquent, vous ne pouvez pas extraire les informations de cette ligne.

De plus, quand vous faites $(this).find("tr"), vous obtenez un tableau avec tous les éléments qui remplissent la requête, de sorte que vous obtenez toutes les lignes de la table.

Qu'est-ce que vous avez besoin est, ajouter une classe aux lignes, puis utilisez le code suivant pour ajouter le EventListener à eux:

$('.table-class').click(function(){ 
    $(this).html(); 
}); 

De cette façon, vous obtiendrez le code HTML de la ligne que vous cliqué. De même, si vous les créez dynamiquement, vous devrez peut-être attacher l'écouteur d'événement après sa création.

Espérons que cela aide.

+0

Pouvez-vous m'en dire plus sur l'écouteur d'événement, cause avec le code que vous Partager ne fonctionne pas, il grave toutes les informations dans le tableau. – GioBot

+0

Avez-vous ajouté une classe à toutes les tables? Vous pouvez aussi le faire comme '$ ('# miembrotb tr) .click'' – groooves