获取静态数据&表中仅为已更改的行

时间:2017-01-17 14:36:01

标签: php jquery html json html-select

我试图一次做多件事&似乎无法让所有事情一起工作。我有一个表格,其中包含从php foreach循环中动态填充的选择框。用户进行更改&点击按钮,我试图遍历表格&抓住已更改的行&获取选定的数据值。这是我的表格的样子:

<table id="myTable>
 <tbody>
   <tr>
     <th>ColumnHeader1</th>
     <th>ColumnHeader2</th>
     <th>ColumnHeader3</th>
   </tr>
   <tr>
      <td name="columnOneData">123456</td>
      <td name="columnTwoData">
         <select>
            <option value="1">Data1</option>
            <option value="2">Data2</option>
            <option value="3">Data3</option>
         </select>
      </td>
      <td name="columnThreeData>
         <select>
            <option value="1">Data1</option>
            <option value="2">Data2</option>
            <option value="3">Data3</option>
         </select>
      </td>
   </tr>
   <tr>
      <td name="columnOneData">987654</td>
      <td name="columnTwoData">
         <select>
            <option value="1">Data1</option>
            <option value="2">Data2</option>
            <option value="3">Data3</option>
         </select>
      </td>
      <td name="columnThreeData>
         <select>
            <option value="1">Data1</option>
            <option value="2">Data2</option>
            <option value="3">Data3</option>
         </select>
      </td>
   </tr>
 </tbody>
</table>
<button id="saveBtn"></button>

我有一个功能设置来添加类&#34; changedRow&#34;任何被改变的tr。通过使用它,我只能获得更改的行,但似乎我只能获取所选的值(但我缺少columnOneData)或者我可以获取所有值(但包括所有选项,而不仅仅是选择的选项)但是无法将其缩小到我需要的范围。最后我需要发送columnOneData&amp; columnTwoData&amp;的选定值columnThreeData返回我的php代码来更新数据库。 (例如用户已对两行进行选择的示例)

 "columnOneData":123456, "columnTwoData":1, "columnThreeData":2
 "columnOneData":987654, "columnTwoData":2, "columnThreeData":3 

任何有关最佳方法的建议都将受到赞赏!

2 个答案:

答案 0 :(得分:1)

首先,我建议你提供不起作用的js代码,以便其他人更容易回答你,因为他们可以修改你的代码。

无论如何,请尝试以下代码:

var all_data = [];
$('#myTable tr.changedRow').each(function() {
    all_data.push({
        columnOneData: $(this).find('td[name="columnOneData"]').text(),
        columnTwoData: $(this).find('td[name="columnTwoData"] select').val(),
        columnThreeData: $(this).find('td[name="columnThreeData"] select').val()
    });
});

Working sample in jsfiddle

答案 1 :(得分:0)

首先,您的名称和ID属性缺少一些引号。

<table id="myTable>
...
<td name="columnThreeData>

......应该......

<table id="myTable">
...
<td name="columnThreeData">

(我会使用类或ID而不是名字。)

至于获取价值,我不是百分之百确定你遇到的问题是什么,但这是我第一次尝试做我认为你要做的事情:

小提琴:https://jsfiddle.net/c3nm0wvq/