我目前使用jQuery数据表来创建我正在显示的表。目前,我已经设置了它,所以当我在表中选择一行时,该行中的文本出现在另一个面板的文本框中。然后,我可以输入其他内容并按下“保存”,它会更改该行中的文本。我目前的问题是,当我通过按钮添加一个新的行,我不能编辑新行中的文本,我可以选择它但是... 例如:我有3行,我选择Test1,我可以成功更改文本。然后单击添加行,然后选择新行并尝试更改该行中的文本,它会更改之前选定的行文本(加载时位于表中的行)。 我该如何解决这个问题?我查看了cell.data,cell.edit,但那是因为各种原因我目前没有使用的编辑器。jQuery Datatable无法编辑新创建的行
表:
<div class="panel-body">
<table id="data-table" class="table table-striped table-bordered nowrap" width="100%">
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>All</td>
</tr>
<tr class="even">
<td>Test1</td>
</tr>
<tr class="odd">
<td>Test2</td>
</tr>
</tbody>
</table>
<div class="col-md-8 col-md-offset-1">
<button type="submit" class="btn btn-sm btn-primary m-r-5" id="addbtn" >New Group</button>
</div>
</div>
//Text box
<div class="form-group">
<label class="col-md-4 control-label">Group Name:</label>
<div class="col-md-8">
<input type="text" id="groupname" class="form-control" value="Name"/>
</div>
</div>
代码使所选行的文本出现在文本框:
(function() {
var table = document.querySelector('#data-table');
var textbox = document.querySelector('#groupname');
table.addEventListener('click', onTableClick);
function onTableClick (e) {
var tr = e.target.parentElement;
var data = [];
for (var td of tr.children) {
data.push(td.innerHTML);
}
textbox.value = data[0];
}
})();
更改选定行的文本:
var row = null;
$("#data-table tr td").click(function() {
$("#groupname").val($(this).text());
row = $(this);
$("#saverow").click(function() {
if (row != null) {
row.text($("#groupname").val());
}
});
});
添加一行:
$("#addbtn").click(function() {
var t = $('#data-table').DataTable();
$('#data-table').dataTable();
t.row.add([
"New Group"
]).draw(false);
});
我认为你的问题是重复IDS。您可能只有一个id文档的实例。它编辑上一行文本的原因是因为您几乎可以通过id选择所有内容,并且只能在页面上找到第一个结果。 – ebraley
所选标签被添加到类标签中。我可以成功地更改我已经编码到html中的所有3行的文本,但是一旦我添加了新行,我就不能更改该行的文本。我仍然可以更改所有其他行文本。 –