Schönen guten Tag.
Ich möchte aus einer vorher (mit cakephp erstellten) definierten Tabellenstruktur per JavaScript Tabellenzeilen duplizieren. Den Code habe ich mir aus einer Beispielanwendung rauskopiert und angepasst. So wie nachfolgend dargestellt funktioniert das ganze leider nicht. Wenn ich aber die Zeile <?php echo $this->Form->input('Copy.' . $key . '.id'); ?> auskommentiere werden die neuen Tabellenzeilen erstellt. Das Problem dabei ist, dass beim erneuten abspeichern immer wieder neue Datensätze angelegt werden. Selbst für die schon vorhanden. Ich denke das liegt dann klar an der nicht vorhandenen ID (weil auskommentiert).
Die Frage ist nun was ist an dem Code falsch?
Vielen Dank für die Hilfe.
mitch26
Ich möchte aus einer vorher (mit cakephp erstellten) definierten Tabellenstruktur per JavaScript Tabellenzeilen duplizieren. Den Code habe ich mir aus einer Beispielanwendung rauskopiert und angepasst. So wie nachfolgend dargestellt funktioniert das ganze leider nicht. Wenn ich aber die Zeile <?php echo $this->Form->input('Copy.' . $key . '.id'); ?> auskommentiere werden die neuen Tabellenzeilen erstellt. Das Problem dabei ist, dass beim erneuten abspeichern immer wieder neue Datensätze angelegt werden. Selbst für die schon vorhanden. Ich denke das liegt dann klar an der nicht vorhandenen ID (weil auskommentiert).
Die Frage ist nun was ist an dem Code falsch?
Vielen Dank für die Hilfe.
mitch26
PHP:
<div class="col-md-12">
<div class="col-xs-12 table-responsive">
<table id="tableCopies" class="table table-striped">
<thead>
<tr>
<th style="width: 120px">CC</th>
<th style="width: 150px">Aktion</th>
</tr>
</thead>
<tbody class="table-rows">
<?php foreach ($this->request->data['Copy'] as $key => $value) : ?>
<tr class="data-rows">
<td>
<?php echo $this->Form->input('Copy.' . $key . '.id'); ?>
<br />
<?php echo $this->Form->input('Copy.' . $key . '.user_id', array('div'=>false, 'label'=>false, 'class'=>'form-control', 'empty'=>'Empfänger auswählen')); ?>
</td>
<td class="action">
<?php if ($key != 0) : ?> <!--In der ersten Zeile (Array) wird der Remove Button nicht angezeigt -->
<a onclick="removeRow(this)" href="#" class="btn btn-danger btn-xs btn-remove-row">Remove</a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
<tfoot>
<tr>
<td>
<a name="btnAddNewRow"></a>
<a id="btnAddNewRow" href="#" class="btn btn-default btn-xs">Add new row</a>
</td>
</tr>
</tfoot>
</table>
</div>
Code:
$('#btnAddNewRow').click(function () {
event.preventDefault();
var newRow = $('.data-rows:first').clone();
var rowNo = $('#tableCopies >tbody >tr').length + 1;
newRow.find('input').each(function (index, element) {
// init default properties
element.name = replaceAll(element.name, '0', rowNo.toString());
element.id = replaceAll(element.id, '0', rowNo.toString());
if (element.type == 'hidden') {
element.value = '';
}
if (element.type == 'text') {
element.value = '';
}
if (element.type == 'number') {
element.value = '0.0';
}
if (element.type == 'Select') {
element.value = '';
}
var id = 'Copy' + rowNo.toString() + 'Quantity';
if (element.id == id) {
alert (element.id);
element.value = '0';
}
console.log(element);
});
// add remove button
var removeBtn = '<a onclick="removeRow(this)" href="#" class="btn btn-danger btn-xs btn-remove-row">Remove</a>';
newRow.find('td.action').append(removeBtn);
$('.table-rows').append(newRow);
//$('.input-price-unit,.input-price').number(true, 2);
rowNo += 1;
});
removeRow = function (el) {
event.preventDefault();
$(el).parents("tr").remove();
};