• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Fehler bei replaceAll

mitch26

New member
Schönen guten Tag,

ich habe eine Tabelle in der ich mittels javascript eine zeile kopiere und neu einfüge. Die Zeile wird auch kopiert.

Der Fehler der dabei passiert ist, dass für die Dropdown-Liste (input('Copy.' . $key . '.user_id'...)) die id immer bei [0] (data[Copy][0][user_id]) stehen bleibt egal wie oft die Zeile kopiert wird. Wobei sich bei einem Texfeld der Zähler erhöht (data[Copy][3][textfeld]).

Warum erhöht sich der Zähler bei der Dropdown-Liste nicht?

Danke

Mitch


Die Tabelle (über cakephp gefüllt):

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>Gelesen</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>                                   
                                    <?= $this->Form->input('Copy.' . $key . '.id') ?>
                                    <br />
                                    [B]<?= $this->Form->input('Copy.' . $key . '.user_id', array('div'=>false, 'label'=>false, 'class'=>'form-control', 'empty'=>'Empfänger auswählen')) ?>[/B]
                                </td>
                                <td>
                                    <?php
                                        echo $this->Form->input('gelesen', array('class'=>'', 'type' => 'checkbox', 'label'=>''));
                                    ?>
                                </td>

                                <td class="action">
                                    <?php if ($key != 0) : ?>
                                            <a onclick="removeRow(this)" href="#" class="btn btn-danger btn-xs btn-remove-row">Löschen</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">+ Empfänger</a>
                            </td>
                        </tr>
                    </tfoot>
                </table>
            </div>
    </div>


Der Javascript Code:

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';
                }

                var id = 'Copy' + rowNo.toString() + 'Quantity';

                if (element.id == 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();
        };
 
Zuletzt bearbeitet von einem Moderator:
Die Tabelle (über cakephp gefüllt)

Bitte grundsätzlich kein PHP bei HTML/JS-Problemen posten, sondern das, was im Browser ankommt. Dann lassen sich die Code-Beispiele auch per Copy-Paste testen, bzw. eventuelle Probleme wegen HTML-Inkompatibilität erkennen... (z.B. findet .find('input') kein <select>).
 
Hallo Dormilich,

danke für die Antwort. Ok demnächst nur noch HTML Code.

Und mittels .find('select') funktioniert es dann auch.

Danke

Mitch
 
Zurück
Oben