Как получить серийный номер в динамической таблице, когда я нажимаю кнопку добавления в codeigniter - PullRequest
2 голосов
/ 08 ноября 2019

Это динамическая таблица pic: enter image description here Моя проблема заключается в том, что когда я нажимаю кнопку +, число Sno должно увеличиваться, а затем представляться в текстовом поле таблицы. Я до сих пор пытался, но я не получил никакого ответа. Пожалуйста, помогите мне решить эту проблему, и спасибо

Просмотр кода страницы:

<table class="table table-bordered table-striped table-xxs" id="tb3">
<thead>
<tr>
<th></th>
<th>Sno</th>
<th>Rate</th>
<th>Item Name</th>
<th>Qty</th>
<th>Weight</th>
<th>Total</th>
<th></th></tr>
</thead>
<tbody>

    <tr >
        <td><a href='javascript:void(0);' class='remove'><span class='glyphicon glyphicon-remove' id="remove"></span></a></td>

        <td><input style="width:50px"  type="text" name="sno[]" value="1"></td>

        <td><input style="width:100px" class ="rate" type="text"  name="rate[]"></td>

        <td><select  style="height: 28px; width:250px; " id="select" class="countries" name="itemname[]"><option></option>
<?php foreach ($itemname as $row ): ?> 
<option value="<?=$row['id']?>" <?php echo set_select('itemname', $row['id']); ?>><?=$row['itemname']?></option> 
<?php endforeach ?>
</select></td>

        <td><input style="width:60px"  class="qty" type="text"  name="qty[]"></td>

        <td><input style="width:70px" class="unit" type="text"  name="unit[]"></td>

        <td><input style="width:100px" class="total" type="text" name="total[]"></td>

        <td><a href="javascript:void(0);" style="font-size:18px;" id="addMore" title="Add More Person"><span class="glyphicon glyphicon-plus"></td>

</tr>
</tbody>
</table>

Javascript код для добавления строк и удаления строк:

<script>
$(function(){
   $('#addMore').on('click', function() {
        var data = $("#tb3 tr:eq(1)").clone(true).appendTo("#tb3");
        data.find("input").val('');
});
  $(document).on('click', '.remove', function() {
        var trIndex = $(this).closest("tr").index();
          if(trIndex>0) {
             $(this).closest("tr").remove();
             $('.qty').trigger('change');
} else {
        alert("Sorry!! Can't remove first row!");
}
});
});      
</script>

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Добавьте некоторые к коду JS:

   $('.addMore').on('click', function() {
        var data = $(this)
                      .parent()
                      .parent()
                      .last('tr')
                      .clone(true)
                      .appendTo($('#tb3').find('tbody'));
        data.find("input").val('');

        var l = $('#tb3').find('tbody').find('tr').length;
        var s = $('#tb3')
                .find('tbody')
                .find('tr')
                .eq(l-2)
                .find('td')
                .eq(1)
                .find('input')
                .val();

        var sp = Number(s) + 1;
        data.find('td').eq(1).find("input").val(sp); 
 });

или

$('.addMore').on('click', function() {
    var data = $(this)
                  .parent()
                  .parent()
                  .last('tr')
                  .clone(true)
                  .appendTo($('#tb3').find('tbody'));

    data.find("input").val('');

    var s = data
              .prev()
              .find('td')
              .eq(1)
              .find('input')
              .val(); 
    var sp = Number(s) + 1;

    data
        .find('td')
        .eq(1)
        .find("input")
        .val(sp);  
});

Кроме того, измените id из AddButton на класс.

$(function(){
   $('.addMore').on('click', function() {
        var data = $(this)
                      .parent()
                      .parent()
                      .last('tr')
                      .clone(true)
                      .appendTo($('#tb3').find('tbody'));
        data.find("input").val('');
        
        var l = $('#tb3').find('tbody').find('tr').length;
        var s = $('#tb3')
                .find('tbody')
                .find('tr')
                .eq(l-2)
                .find('td')
                .eq(1)
                .find('input')
                .val();
      
        var sp = Number(s) + 1;
        data.find('td').eq(1).find("input").val(sp);  
  });
  $(document).on('click', '.remove', function() {
        var trIndex = $(this).closest("tr").index();
          if(trIndex>0) {
             $(this).closest("tr").remove();
             $('.qty').trigger('change');
          } else {
                alert("Sorry!! Can't remove first row!");
          }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table table-bordered table-striped table-xxs" id="tb3">
<thead>
<tr>
<th></th>
<th>Sno</th>
<th>Rate</th>
<th>Item Name</th>
<th>Qty</th>
<th>Weight</th>
<th>Total</th>
<th></th></tr>
</thead>
<tbody>

    <tr >
        <td><a href='javascript:void(0);' class='remove'><span class='glyphicon glyphicon-remove' id="remove"></span></a></td>

        <td><input style="width:50px"  type="text" name="sno[]" value="1"></td>

        <td><input style="width:100px" class ="rate" type="text"  name="rate[]"></td>

        <td><select  style="height: 28px; width:250px; " id="select" class="countries" name="itemname[]"><option></option>
 
<option value="23423">itemname</option> 
<?php endforeach ?>
</select></td>

        <td><input style="width:60px"  class="qty" type="text"  name="qty[]"></td>

        <td><input style="width:70px" class="unit" type="text"  name="unit[]"></td>

        <td><input style="width:100px" class="total" type="text" name="total[]"></td>

        <td><a href="javascript:void(0);" style="font-size:18px;" class="addMore" title="Add More Person"><span class="glyphicon glyphicon-plus">Add</span></td>

</tr>
</tbody>
</table>
0 голосов
/ 08 ноября 2019

Установить имя класса для поля ввода sno []

Например:

<td><input style="width:50px" class="sno" type="text" name="sno[]" value="1"></td>.

Вызвать функцию ApplySerialNO () в добавлении строки и удалить функцию строки

$('#addMore').on('click', function() {
        var data = $("#tb3 tr:eq(1)").clone(true).appendTo("#tb3");
        data.find("input").val('');

        ApplySerialNO();
});

$(document).on('click', '.remove', function() {
    var trIndex = $(this).closest("tr").index();
    if(trIndex>0) {
        $(this).closest("tr").remove();
        $('.qty').trigger('change');

        ApplySerialNO();
    } else {
        alert("Sorry!! Can't remove first row!");
    }
});

Эта функция очищает старое значение и добавляет новый серийный номер

function ApplySerialNO() {
    var count = 1;

    $(".sno").each(function() {
        var selectedTr = $(this);
        selectedTr.val('');
        selectedTr.val(count);
        count++;
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...