我试图一次做多件事&似乎无法让所有事情一起工作。我有一个表格,其中包含从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
任何有关最佳方法的建议都将受到赞赏!
答案 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()
});
});
答案 1 :(得分:0)
首先,您的名称和ID属性缺少一些引号。
<table id="myTable>
...
<td name="columnThreeData>
......应该......
<table id="myTable">
...
<td name="columnThreeData">
(我会使用类或ID而不是名字。)
至于获取价值,我不是百分之百确定你遇到的问题是什么,但这是我第一次尝试做我认为你要做的事情: