Привет У меня есть очень большое редактирование, которое показывает элементы, поступающие из базы данных MySQL и возможность добавлять / удалять новые строки. Я использую jquery для расчета цены, промежуточных итогов, налога и итоговой суммы. Это все работает так же, как и добавление новой строки и удаление строк.
Тем не менее, элементы, поступающие из базы данных, которые уже существуют, я использую ajax для удаления элементов, чтобы обновить результаты без отправки формы. Это работает, за исключением того, что не будет рассчитывать итоги.
Добавьте новые строки и затем удалите их, которые не имеют идентификатора в базе данных, но используют jquery для удаления и работы, а также дают правильные вычисления при удалении. Форма слишком большая, поэтому в ней будут только те кусочки, которые нуждаются в помощи.
Это ajax и jquery — удаление через ajax — это то, что не пересчитывается.
`$ (document) .on (‘click’, ‘.delete-row’, function () {
var id = $ (this) .attr («id»);
if (confirm("Are you sure you want to delete this Item?")) {
$.ajax({
type: "POST",
url: "job_remove_material_new.php",
data: ({
id: id
}),
cache: false,
success: function(html) {
$(".delete_mem" + id).fadeOut('slow');
calculateSum();
}
});
} else {
return false;
}
});$(document).ready(function () {
// remove product row
$('#invoice_tables').on('click', ".delete-row", function(e){
e.preventDefault();
$(this).closest('.clone').remove();
calculateSum();
});
var cloned = $('#invoice_tables .clone').clone();
$(".add-row").click(function (e) {
e.preventDefault();
cloned.clone().appendTo('#invoice_tables');
});
calculateSum();
$('#invoice_tables').on('change keyup paste', '.prices', function() {
//updateTotals(this);
calculateSum();
});
});
$(document).ready(function() {
calculateSum();
$(".prices").keyup(calculateSum);
$("#tax").keyup(displayTax);
});
var sum;
function calculateSum() {
sum = 0;
//iterate through each textboxes and add the values
$(".prices").each(function() {
//add only if the value is number
if (!isNaN(this.value) && this.value.length != 0) {
sum += parseFloat(this.value);
}
});
$("#subtotal").val(sum.toFixed(2));
displayTax();
}
function displayTax() {
var taxFloat = parseFloat($('#tax').val());
if (isNaN(taxFloat))
taxFloat = 1.1;
var total = taxFloat * sum;
$("#total").val(total.toFixed(2));
var gst = total / 11;
$("#gst").val(gst.toFixed(2));
}
эхо
This is the form corresponding to the above:
<div class="row clones delete_mem'.$material_id.'">
<div class="col-md-12">
<div class="input-group-btn">
<a id="'.$material_id.'" class="btn btn-danger btn-xs delete-rows"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></a>
</div></div>
<div class="clear"></div>
<div class="col-md-12">
<div class="col-md-9 col-sm-12 col-xs-12">
<label>Description</label>
<div class="form-group">
<input type="hidden" name="material_id[]" id="material_id[]" value="'.$material_id.'">
<input type="hidden" name="job_id[]" id="job_id[]" value="'.$job_id.'"><textarea class="form-control item-input invoice_product editors" id="job_mat_descs[]" name="job_mat_descs[]" placeholder="Enter item title and / or description" />'.$job_mat_descs.'</textarea>
</div>
</div>
<div class="col-md-2 hidden">
<div class="form-group"><label></label>
<input hidden class="form-control" id="job_mat_qtys[]" name="job_mat_qtys[]" value="1">
</div>
</div>
<div class="col-md-3 col-sm-12 col-xs-12"><label>Price</label>;
<div class="input-group input-group">
<span class="input-group-addon">'.CURRENCY.'</span>
<input type="text" class="form-control prices" id="job_mat_costs[]" name="job_mat_costs[]" aria-describedby="sizing-addon1" placeholder="0.00" value="'.number_format($prices, 2).'">
</div></div>
</div>
<div class="clear"></div>
</div>';
$ itemsPrice + = цены $;
<div class="row clone">
<div class="col-md-12">
<div class="input-group-btn"> <a href="#" class="btn btn-danger btn-xs delete-row"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></a> </div>
</div>
<div class="clear"></div>
<div class="col-md-12">
<div class="col-md-9 col-sm-12 col-xs-12">
<label>Description</label>
<div class="form-group">
<input type="hidden" name="job_id[]" id="job_id[]" value="<?php echo $job_id; ?>">
<textarea class="form-control editors" id="job_mat_desc[]" name="job_mat_desc[]" placeholder="Enter item title and / or description" />
</textarea>
<script>
$( "body" ).on( "click", ".add-row", function() {
// $( '<textarea name="job_mat_desc[]" class="form-control editors"></textarea>' ).appendTo( "#job_mat_desc" );
$( 'textarea.editors' ).ckeditor();
});
CKEDITOR.replace("editors[]" );</script>
</div>
</div>
<div class="col-md-2 hidden">
<div class="form-group">
<label></label>
<input hidden class="form-control" id="job_mat_qty[]" name="job_mat_qty[]" value="1">
</div>
</div>
<div class="col-md-3 col-sm-12 col-xs-12">
<label>Price</label>
;
<div class="input-group input-group"> <span class="input-group-addon"><?php echo CURRENCY; ?></span>
<input type="text" class="form-control prices" id="job_mat_cost[]" name="job_mat_cost[]" aria-describedby="sizing-addon1" placeholder="0.00" value="">
</div>
</div>
<div class="clear"></div>
</div>
</div>
</div>
<div class="clear"></div>
<div class="row text-center text-green">
<div class="panel-footer">
<h2><a href="#" class="btn btn-success btn-lg add-row"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Add Item</a> </h2>
</div>
</div>
<div class="clear"></div>
<div class="row m-t-lg m-b-lg">
<?php
$subtotal = $itemsPrice + $shipping;
$gst = ($subtotal * .10);
$total = ($subtotal + $gst);
?>
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> </div>
<div id="invoice_totals" class="col-xs-offset-1 col-xs-10 col-sm-offset-1 col-md-offset-3 col-lg-offset-3 col-sm-4 col-md-3 col-lg-3">
<label>SHIPPING</label>
<div class="input-group input-group"> <span class="input-group-addon"><?php echo CURRENCY; ?></span><input name="shipping" type="text" placeholder="0.00" class="prices text-left form-control" id="shipping" aria-describedby="sizing-addon1"value="<?php echo number_format($shipping, 2); ?>" size="16"></div>
<label>SUBTOTAL</label>
<div class="input-group input-group"> <span class="input-group-addon"><?php echo CURRENCY; ?></span> <input name="subtotal" type="text" class="txt1 disabled form-control" id="subtotal" value="<?php echo number_format($subtotal, 2); ?>" size="16" aria-describedby="sizing-addon1" placeholder="0.00" readonly="readonly"></div>
<label>GST</label> <div class="input-group input-group"> <span class="input-group-addon"><?php echo CURRENCY; ?></span><input name="gst" type="text" class="txt1 form-control disabled" id="gst" value="<?php echo number_format($gst, 2); ?>" size="16" aria-describedby="sizing-addon1" placeholder="0.00" readonly="readonly"></div>
<label>TOTAL</label> <div class="input-group input-group"> <span class="input-group-addon"><?php echo CURRENCY; ?></span> <input name="total" type="text" class="txt2 form-control disabled" id="total" value="<?php echo number_format($total, 2); ?>" size="16" aria-describedby="sizing-addon1" placeholder="0.00" readonly="readonly"></div>
`
Я попытался изменить строки удаления, чтобы они были одинаковыми, но из-за того, что у одного есть идентификатор, а у другого его нет, он не будет удален.
Надеюсь, что это имеет смысл.
Затем перейдите в базу данных, и у меня есть кнопка для создания PDF, поэтому при удалении элементов расчеты должны быть правильными.
Большое спасибо.
Задача ещё не решена.
Других решений пока нет …