获取表javascript的行索引

时间:2017-12-27 13:02:55

标签: javascript php jquery html mysql

我知道这个问题已被多次询问,我经历了大部分建议,但似乎没有一个解决方案适合我。

我有一个模态表,我允许用户进行一些更改。然后,我使用这些值来更新数据库中的数据。

我的表行是通过回显HTML代码

创建的
echo "<tr> ";                   
echo "<td > $row_counter  </td>";
echo "<td style='width:200px' class='left_align' > $lstr_product_name </td>";
echo "<td  > $lstr_department_name </td>";
echo "<td  > <input type='text' name='unit_cost' class='form-control unit_cost' style='width:50px;' value='$lint_unit_cost' /> <input name='product_id' data-id='$lint_product_id' class='form-control product_id' value='$lint_product_id' type='hidden'/> </td>";
echo "<td  > $lint_quantity_counted </td>";
echo "<td  > $lint_total_cost </td>";

要更新数据库中的正确值,我需要获取product_id名称,我知道我可以通过

获取
var x = document.getElementsByName("product_id")[0].value;

但是我需要获得正确的行索引才能发布正确的product_id。

我尝试了以下内容:

alert($(this).index()); 

但是这总是返回0.我最接近解决方案是使用

var rowID = $(this).closest('tr').index();
alert(rowID);

这个问题是我的可编辑单元格是&#34; unit_cost&#34;这是tr中的第4个单元格。这意味着最接近的tr不是单元格所在的行而是下面的行。

我已经尝试了

alert( "Row id: " + $("#tbl_store_product_sizes tr").this.rowIndex );

但也没有运气。我已经没有想法了,这样做的正确方法是什么?

修改 我的所有javascript代码都包含在$(document).ready(function()中 我正在使用以下代码

来监视unit_cost字段的更改
$(document.body).off( "change", ".unit_cost");
$(document.body).on('change', '.unit_cost', function(event) 
{

    var rowID = $(this).closest('tr').index();
    alert(rowID);
    var product_id = document.getElementsByName("product_id")[rowID].value;
    alert('The product id is: ' + x);
    var unit_cost = document.getElementsByName("unit_cost")[rowID].value;


});

1 个答案:

答案 0 :(得分:0)

<强> 说明: -

由于两个输入都在同一个<td>,因此在更改第一个输入时,您必须使用.next()来获取下一个输入数据。

您需要执行以下操作: -

$(document).on('change', '.unit_cost', function(event) {

    var rowID = $(this).closest('tr').index();
    alert(rowID);
    var product_id = $(this).next('.product_id').val();
    alert('The product id is: ' + product_id);
    var unit_cost = $(this).val();
});

工作代码段: -

$(document).on('change', '.unit_cost', function(event) {

    var rowID = $(this).closest('tr').index();
    alert('The corresponding row index is: '+ rowID);
    var product_id = $(this).next('.product_id').val();
    alert('The product id is: ' + product_id);
    var unit_cost = $(this).val();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
  <td>1</td>
  <td style='width:200px' class='left_align'>2 </td>
  <td>3 </td>
  <td> <input type='text' name='unit_cost' class='form-control unit_cost' style='width:50px;' value='4' /> <input name='product_id' data-id='$lint_product_id' class='form-control product_id' value='5' type="hidden"/> </td>
  <td>6</td>
  <td>7</td>
</tr>
<tr>
  <td>8</td>
  <td style='width:200px' class='left_align'>9 </td>
  <td>10 </td>
  <td> <input type='text' name='unit_cost' class='form-control unit_cost' style='width:50px;' value='11' /><input name='product_id' data-id='$lint_product_id' class='form-control product_id' value='12' type="hidden"/> </td>
  <td>13</td>
  <td>14</td>
</tr>
</table>