我目前使用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行的文本,但是一旦我添加了新行,我就不能更改該行的文本。我仍然可以更改所有其他行文本。 –