Показать сообщение отдельно
  #1 (permalink)  
Старый 26.09.2020, 10:08
l30 l30 вне форума
Интересующийся
Отправить личное сообщение для l30 Посмотреть профиль Найти все сообщения от l30
 
Регистрация: 26.09.2020
Сообщений: 11

Динамически создаваемая форма с подсчетом суммы
Добрый день!
Подскажите есть динамически создаваемая форма:
<div class="row">
    <div class="col-1">№</div>
    <div class="col-4">Номенклатура</div>
    <div class="col-1">Кол-во</div>
    <div class="col-2">Цена</div>
    <div class="col-2">Сумма</div>
    <div class="col-2"></div>
  </div>
  <div class="row">
    <div data-container="set">
    <div class="row p-2" data-item="set">
      <div class="col-1"><input type="text" value="" name="str[]" value=""></div>
     <div class="col-4"> <input type="text"  name="name[]" value=""></div>
      <div class="col-1"> <input type="text"  name="num[]" value=""></div>
       <div class="col-2"> <input type="text"  name="price[]" value=""></div>
     <div class="col-2"> <input type="text"  name="sum[]" value="" readonly></div>
 
     <div class="col-2"> <a type="button" data-action="remove" class="remove">[-]</a>
      <a type="button" data-action="add" class="add">[+]</a>
     </div>
    </div>
  </div>
  </div>
  <div class="row">
    <div class="col text-right"><hr>
    <label>Итого: <input type="text"  name="totalsum" value="" class="total" readonly></label>
    </div>
  </div>


И скрипт JS:

$(function () {
 
  var $container = $('[data-container="set"]'),
    $row = $container.find('[data-item="set"]').clone(true),
    $totalsum = $('[name="totalsum"]');
 
  $(document) 
    .on('click', '[data-action="add"]', function () {
      var $clone = $row.clone(true);  
 
      $container.append($clone);
      $clone.find('input[name]').eq(0).trigger('focus');
    })
    .on('click', '[data-action="remove"]', function () {
      var $parent = $(this).closest('[data-item="set"]');
 
      $totalsum.val($totalsum.val() - $parent.find('[name="sum[]"]').val());
      $parent.remove();
    })
    .on('input', '[name="num[]"], [name="price[]"]', function () {
      var $item = $(this),
        $parent = $item.closest('[data-item="set"]'),
        cost = parseFloat($parent.find('[name="num[]"]').val()),
        amount = parseFloat($parent.find('[name="price[]"]').val());
 
      $item.val($item.val().replace(/[^\d\.]/g, '').replace(/^\.+/g, '0.').replace(/^(\d+\.\d+)\.[\d\.]*$/g, '$1'));
 
      if (isFinite(cost) && isFinite(amount)) {
        var $sum = $parent.find('[name="sum[]"]'),
          prev = parseFloat($sum.val()) || 0,
          next = (cost * amount).toFixed(2),
          totalPrev = parseFloat($totalsum.val()) || 0;
 
        $totalsum.val((totalPrev + parseFloat(next) - prev).toFixed(2));
        $sum.val(next);
      }
    });
});


мне нужно чтобы все значениея прописывались в value, чтобы передать их в php. Как это сделать?
И еще хотелось бы чтобы поле № автоматически при добавлении нового поля присваивался порядковый номер (1,2,3 и т.д.)
Как это можно реализовать подскажите?
Ответить с цитированием