简体   繁体   English

选中行时从表中的特定列获取数据

[英]Get data from specific columns in table when row checked

I need to get from specific table columns in a row. 我需要从特定的表列中获取行。 All data should be pushed into an array. 所有数据都应放入一个数组中。 I should take data from each checked row from different columns (1,3,4). 我应该从不同的列(1、3、4)的每个选中的行中获取数据。 Column #4 contains drop-down option and it should take only selected value. 列#4包含下拉选项,并且应该仅采用所选值。 I am having a hard time getting this function to work, it works if I have only one column. 我很难让此功能正常工作,如果我只有一列,则可以正常工作。 I am facing trouble when I am retrieving data from , it retrieves all data from option values, I should get only selected value. 我从中检索数据时遇到麻烦,它从选项值中检索所有数据,我应该只获得选定的值。

 function getData() { // Enumerate over each checked checkbox $('input:checked').each(function() { var row = []; $(this).closest('tr').find('td:eq(5)').each(function() { row.push($(this).text()); }); // Add this row to our list of rows rows.push(row); //debugger; }); console.log(row); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <th>#</th> <th>Firstname</th> <th>Lastname</th> <th>Age</th> <th>Country</th> </tr> <tr> <td><input type="checkbox" id="checkbox" value="1"></td> <td>Jill</td> <td>Smith</td> <td>20</td> <td> <select id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> <tr> <td><input type="checkbox" id="checkbox" value="2"></td> <td>Eve</td> <td>Jackson</td> <td>14</td> <td> <select id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> <tr> <td><input type="checkbox" id="checkbox" value="3"></td> <td>Amanda</td> <td>Jac</td> <td>14</td> <td> <select id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> </table> <button type="button" onclick="getData()">Submit</button> 

Function displays only data from one column. 函数仅显示一列中的数据。 If I add .'td:eg(6)' I got empty array 如果我添加.'td:eg(6)'我得到空数组

@Bruno your case is little different and to get the desired result I have updated your code for button click event & it is as follow. @布鲁诺您的情况有点不同,为了获得理想的结果,我已经更新了按钮单击事件的代码,如下所示。

$("#btnSubmit").click(function(){
    var rows = [];

$('input:checked').each(function() {
    var row = $(this).parent().parent();

    var data = {};
        $(row).find("td").each(function(i,obj){
            if(i == 1){
                data.name = $(this).text();
        }
        else if(i == 3){
                data.age = $(this).text();
        }
        else if(i == 4){
                data.country = $(this).find("select").val();
        }
    })

    rows.push(data);
  })
  console.log(rows);
}) 

And before implementing it to your code you can play it in here at JS Fiddle Demo . 在将其实现为代码之前,您可以在JS Fiddle Demo的此处进行播放。

In fiddle demo open console [F12] you can see your list of selected row value in an array. 在小提琴演示打开控制台[F12]中,您可以在数组中查看所选行值的列表。

Hope this is what you are looking for. 希望这是您想要的。

Here i try your result to get select row dropdwun value. 在这里,我尝试您的结果以获取选择行dropdwun值。

 function getData(){ var rows=[]; // Enumerate over each checked checkbox $('input:checked').each(function () { var row = []; var cnty= $(this).closest('tr').find('td:nth-child(5)').children('select').val(); var fname=$(this).closest('tr').find('td:nth-child(2)').text(); var lname=$(this).closest('tr').find('td:nth-child(3)').text(); var age=$(this).closest('tr').find('td:nth-child(4)').text(); var vals=[fname ,lname, age, cnty]; row.push(vals); // Add this row to our list of rows rows.push(row); //debugger; }); console.log(rows); } 
 <table > <tr> <th>#</th> <th>Firstname</th> <th>Lastname</th> <th>Age</th> <th>Country</th> </tr> <tr> <td><input type="checkbox" id="checkbox" value="1"></td> <td>Jill</td> <td>Smith</td> <td>20</td> <td> <select id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> <tr> <td><input type="checkbox" id="checkbox" value="2"></td> <td>Eve</td> <td>Jackson</td> <td>14</td> <td> <select id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> <tr> <td><input type="checkbox" id="checkbox" value="3"></td> <td>Amanda</td> <td>Jac</td> <td>14</td> <td> <select id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> </table> <button type="button" onclick="getData()">Submit</button> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

Here is how you could have all the selected values on button click. 这是单击按钮时如何获得所有选定值的方法。 Just iterate over all tr and find select inside and get the value . 只需遍历所有tr并找到内部的select并获取value

 function getData(){ $("tr").each(function() { if($(this).find("select")){ console.log($(this).find("select").val()) } }); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table > <tr> <th>#</th> <th>Firstname</th> <th>Lastname</th> <th>Age</th> <th>Country</th> </tr> <tr> <td><input type="checkbox" id="checkbox" value="1"></td> <td>Jill</td> <td>Smith</td> <td>20</td> <td> <select class="select-cls" id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> <tr> <td><input type="checkbox" id="checkbox" value="2"></td> <td>Eve</td> <td>Jackson</td> <td>14</td> <td> <select id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> <tr> <td><input type="checkbox" id="checkbox" value="3"></td> <td>Amanda</td> <td>Jac</td> <td>14</td> <td> <select id="country"> <option value='1'>Germany</option> <option value='2'>England</option> <option value='3'>Croatia</option> <option value='4'>USA</option> </select> </td> </tr> </table> <button type="button" onclick="getData()">Submit</button> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM