How to get Id value by clicking Edit button on the

2019-02-19 06:16发布

I use jQuery Datatable for listing records and add an Action button (Edit) for editing the record on a modal dialog. If I select a row I can get the row id value and open the related record on modal dialog. However, if I click the Edit button directly, I cannot get the Id value of the related record (on the same row) because it is not selected first when clicking Edit button. What I want to do is that: I want to get the Id value of the row on which I click the Edit button. Is it possible? If not, can I select the hovered row programmatically when I click the Edit button? (If the prior scenario is possible I would prefer it). Any idea?

function openModal() {

    var table = $('#dtbListAccount').DataTable();
    var oRow = $('this').parents('tr')[0];
    var oData = table.fnGetData(oRow);

    //code omitted for brevity
};

enter image description here

4条回答
戒情不戒烟
2楼-- · 2019-02-19 07:05

You can use this code to achieve this.

var table;
$(document).ready( function () {
 table  = $('#example').DataTable();
} );

$('body').on('click', '#btnEdit', function(){
    //to get currently clicked row object
    var row  = $(this).parents('tr')[0];

    //for row data
    console.log( table.row( row ).data() );

});

It will return row data as a string array.

Live Demo Here

Use the browser console to see the results.

查看更多
我命由我不由天
3楼-- · 2019-02-19 07:07

Here's the full source code. Hope this helps :)

//when button (edit button here) is clicked.... Note: no need id for buttons too, just use <button> tag
$('table button').click(function() {
  var tr = $(this).closest('tr');
  var id = tr.children('td:eq(0)').text(); //get the text from first col of current row
  console.log(id); //you'll get the actual ids here
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<table>
  <tr>
    <th>Id</th>
    <th>Name</th>
    <th>Surname</th>
    <th>Action</th>
  </tr>
  <tr>
    <td>1</td>
    <td>Hans</td>
    <td>Jahnsen</td>
    <td>
      <button>Edit</button>
    </td>
  </tr>
  <tr>
    <td>2</td>
    <td>Robert</td>
    <td>Boylstat</td>
    <td>
      <button>Edit</button>
    </td>
  </tr>
  <tr>
    <td>3</td>
    <td>Jim</td>
    <td>Alexi</td>
    <td>
      <button>Edit</button>
    </td>
  </tr>
</table>

查看更多
Root(大扎)
4楼-- · 2019-02-19 07:09

Assign the row-id(s) to the edit buttons as well, write click events for the edit buttons which, based on the id of the button clicked on, triggers the edit functionality / view.

You could assign the row-id(s) to the buttons either when rendering itself, or write a small function that does the same on page load.

查看更多
干净又极端
5楼-- · 2019-02-19 07:13

If the id is on the parent container then find it's value and use it. If it's a sibling then do the same.

查看更多
登录 后发表回答