2016-08-03 2 views
0

До сих пор этого сценария может:Вычтите из GrandTotal когда удалить динамически грести

  • Добавить динамически строки и удалить их.
  • Умножьте, суммируйте промежуточные итоги и получите значение granTotal.

Но я не могу вычитать из GrandTotal, когда строка удалена. Можете ли вы показать, как я могу его получить? Благодарю.

$(document).on("change", "input", function() { 
    $(".price").keyup(function() { 
     var grandTotal = 0; 
     $("input[name='qty[]']").each(function (index) { 
      var qty = $("input[name='qty[]']").eq(index).val(); 
      var price = $("input[name='price[]']").eq(index).val(); 
      var output = parseInt(qty) * parseInt(price); 
      if (!isNaN(output)) { 
       $("input[name='output[]']").eq(index).val(output); 
       grandTotal = parseInt(grandTotal) + parseInt(output); 
       $('#gran').val(grandTotal); 
      } 
     }); 
    }); 
}); $(document).on('click', '.btn-add', function(e) 
    { 
     e.preventDefault(); 
     var controlForm = $('.controls form:first'), 
      currentEntry = $(this).parents('.voca:first'), 
      newEntry = $(currentEntry.clone()).appendTo(controlForm); 
     newEntry.find('input').val(''); 
     controlForm.find('.btn-add:not(:last)') 
      .removeClass('btn-default').addClass('btn-danger') 
      .removeClass('btn-add').addClass('btn-remove') 
      .html('<span class="glyphicon glyphicon-minus" aria-hidden="true"></span> Remove '); 
    }).on('click', '.btn-remove', function(e) 
    { 
     $(this).parents('.voca:first').remove(); 
     e.preventDefault(); 
     return false; 
    }); 

А вот HTML:

<div class="container"> 
<div class="control-group" > 
    <div class="controls"> 
     <form role="form" autocomplete="off"> 
      <div class="row">     
       <div class="voca"> 
        <div class="col-md-2"> 
         <input class="form-control qty" name="qty[]" type="text" value=""> 
        </div> 
        <div class="col-md-2"> 
         <input class="form-control price" name="price[]" type="text" value=""> 
        </div> 
        <div class="col-md-2"> 
         <input class="form-control output" placeholder="" name="output[]" type="text" value="" readonly> 
        </div> 
        <button type="button" class="btn btn-success btn-add" > 
         <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span> Add 
        </button> 
       </div> 
      </div>  
     </form> 
     <br> 
     </div> 
    </div> 
    <div id="grand"> 
    Grand Total:<input type="text" name="gran" id="gran" readonly> 
</div> 
</div> 

ответ

0

Для достижения ожидаемого результата, используйте ниже опции на кнопку мыши

var remVal = $(this).prev().find('input').val(); 
    var grandVal = $('#gran').val(); 
    $(this).parents('.voca:first').remove(); 
    $('#gran').val(grandVal - remVal); 

JS:

$(document).on("change", "input", function() { 
    $(".price").keyup(function() { 
    var grandTotal = 0; 
    var x = []; 
    $("input[name='qty[]']").each(function(index) { 
     var qty = $("input[name='qty[]']").eq(index).val(); 
     var price = $("input[name='price[]']").eq(index).val(); 
     var output = parseInt(qty) * parseInt(price); 
     if (!isNaN(output)) { 
     $("input[name='output[]']").eq(index).val(output); 
     grandTotal = parseInt(grandTotal) + parseInt(output); 
     $('#gran').val(grandTotal); 
     x[0] = grandTotal; 
     } 
    }); 
    }); 
}); 
$(document).on('click', '.btn-add', function(e) { 

    e.preventDefault(); 
    var controlForm = $('.controls form:first'), 
    currentEntry = $(this).parents('.voca:first'), 
    newEntry = $(currentEntry.clone()).appendTo(controlForm); 
    newEntry.find('input').val(''); 
    controlForm.find('.btn-add:not(:last)') 
    .removeClass('btn-default').addClass('btn-danger') 
    .removeClass('btn-add').addClass('btn-remove') 
    .html('<span class="glyphicon glyphicon-minus" aria-hidden="true"></span> Remove '); 
}).on('click', '.btn-remove', function(e) { 

    var remVal = $(this).prev().find('input').val(); 
    var grandVal = $('#gran').val(); 

    console.log($(this).prev().find('input').val()); 
    $(this).parents('.voca:first').remove(); 
    $('#gran').val(grandVal - remVal); 
    e.preventDefault(); 
    return false; 
}); 

Codepen - http://codepen.io/nagasai/pen/xOajYb

+0

Это работает. При выводе строки вычитается. – rafpre

+0

Спасибо @rafpre, пожалуйста, проголосовать за мой пост, если это помогло вашему вопросу :) –

+0

Я сделал это. Благодарю. – rafpre

Смежные вопросы