Ich verwende derzeit jQuery-Datatabellen, um die Tabelle, die ich zeige, zu erstellen. Derzeit habe ich es eingerichtet, wenn ich eine Zeile in der Tabelle auswählen, wird der Text in dieser Zeile in einem Textfeld in einem anderen Fenster angezeigt. Ich kann dann etwas anderes eingeben und "Speichern" drücken, und es ändert den Text in dieser Zeile. Mein aktuelles Problem ist, wenn ich eine neue Zeile über eine Schaltfläche hinzufüge, kann ich den Text in der neuen Zeile nicht bearbeiten, kann ich es aber auswählen ... Beispiel: Ich habe 3 Zeilen, ich wähle Test1 und ich kann den Text erfolgreich ändern . Dann klicke ich auf Zeile hinzufügen und wähle dann die neue Zeile aus und versuche, den Text in dieser Zeile zu ändern. Dadurch ändert sich der Text der zuvor ausgewählten Zeile (eine Zeile, die beim Laden in der Tabelle war). Wie kann ich dieses Problem beheben? Ich habe in cell.data, cell.edit gesucht, aber das ist für den Editor, den ich momentan aus verschiedenen Gründen nicht verwende.jQuery Datatable kann keine neu erstellte Zeile bearbeiten
Tabelle:
<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>
-Code für die Herstellung der Text in Textfeld erscheinen die ausgewählten Zeile:
(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];
}
})();
Ändern der ausgewählten Zeile Text:
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());
}
});
});
Zeile hinzufügen:
$("#addbtn").click(function() {
var t = $('#data-table').DataTable();
$('#data-table').dataTable();
t.row.add([
"New Group"
]).draw(false);
});
Ich denke, dein Problem ist doppelte IDs. Sie können nur eine Instanz einer ID in einem HTML-Dokument haben. Der Grund dafür, dass der Text der vorherigen Zeile bearbeitet wird, ist, dass Sie für fast alles nach ID suchen und nur das erste Ergebnis auf der Seite finden. – ebraley
Das ausgewählte Tag wird dem Klassen-Tag hinzugefügt. Ich kann den Text für alle 3 Zeilen, die ich in den HTML-Code codiert habe, erfolgreich ändern, aber sobald ich eine neue Zeile hinzufüge, kann ich den Text dieser Zeile nicht ändern. Ich kann aber immer noch alle anderen Zeilen Text ändern. –