Jquery увеличение ID выбранного входа - PullRequest
0 голосов
/ 02 октября 2019

Я хочу изменить идентификатор моего поля выбора. Поле выбора генерируется PHP.

Поле ввода выбора хранится в var indirectSelect

Все так просто, как кажется,Я не могу это изменить. Вот что я попробовал:

$(indirectSelect).attr('id', 'indirect_'+counter);

HTML хранится в var indirectSelect

<select name="indirect" id="indirect_0" class="form-control">
  <option value=""></option>
  <option value="8002">Controle ( indirekt )</option>
  <option value="9000">Indirekte uren produktie afdeling</option>
  <option value="9010">Leerschool</option>
  <option value="9020">Opleidingen en trainingen</option>
  <option value="9050">Div. indirekte taken</option>
  <option value="9075">Systeembeheer</option>
  <option value="9900">Stroomstoring</option></select>
</select

Полный код

$(document).ready(function () {
    var counter = 0;
    var regex = /^(.*)(\d)+$/i;
    var indirectSelect = '<?php echo $select_6 ?>';

    $("#addExtraRow").on("click", function () {
        $(indirectSelect).attr('id', 'indirect_'+counter);

        var newRow = $("<tr id="+ counter +">");
        var cols = "";

        cols += "<td><div class='tooltip12'>";
        cols += "<input type='number' id='resourceid_<?php echo $ii; ?>' name='resourceid' class='form-control' value='' readonly>";
        cols += "<span class='tooltip12text'><div id = 'resourcedescr_" + counter + "''></div></span>";
        cols += "</div></td>";

        cols += '<td><input type="text" class="form-control" name="base' + counter + '"/></td>';
        cols += '<td><input type="text" class="form-control" name="lot' + counter + '"/></td>';
        cols += '<td><input type="text" class="form-control" name="split' + counter + '"/></td>';
        cols += '<td><input type="text" class="form-control" name="sub' + counter + '"/></td>';
        cols += '<td><input type="text" class="form-control" name="seq' + counter + '"/></td>';
        cols += '<td>'+indirectSelect+'</td>';
        cols += "<td><input type='date' id='datum_" + counter + "' name='datum' class='form-control' value=''></td>";
        cols += "<td><input type='time' step = '1' id='clockin_" + counter + "' name='clockin' class='form-control' value='' ></td>";
        cols += "<td><input type='time' step = '1' id='clockout_" + counter + "' name='clockout' class='form-control' value=''></td>";
        cols += "<td><input type='number' id='break_" + counter + "' name='break' class='form-control' value='' step='.01'></td>";
        cols += "<td><input type='number' id='worked_" + counter + "' name='worked' class='form-control' value='' readonly></td>";
        cols += "<td><input type='number' id='multiplier_" + counter + "' name='multiplier' class='form-control' value='100'></td>";

        cols += '<td><button class="btn btn-default resetRow" type="button"><i class="fa fa-refresh" aria-hidden="true"></i></button>';
        cols += '<button class="btn btn-outline btn-default ibtnDel" type="button"><i class="fa fa-trash-o" aria-hidden="true"></i></button></td>';
        cols += "</tr>";

        newRow.append(cols);
        $("table.extraFormRows").append(newRow);
        counter++;
    });

    $("table.extraFormRows").on("click", ".ibtnDel", function (event) {
        $(this).closest("tr").remove();       
        counter -= 1
    });
});

1 Ответ

1 голос
/ 02 октября 2019

Ваш indirectSelect - простая строка из PHP

Ваш $(indirectSelect) преобразует строку в объект jQuery в памяти, но вы никогда не будете использовать ее снова.

Попробуйте:

$("#addExtraRow").on("click", function () {
   var $indirectSelect = $(indirectSelect);
   $indirectSelect.attr('id', 'indirect_'+counter);

   ...

   // Wrap element in another element to get full inner HTML, otherwise it would be just <option> tags
   cols += '<td>' + $indirectSelect.wrap('<div>').html() + '</td>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...