#jquery #math
#jquery #математика
Вопрос:
Я пытаюсь внедрить значение скидки, получаемое в моей форме. я ввожу свою форму, если я ввел значение, оно добавило 2 значения
|QTY GST(TAX) DISC RATE AMOUNT
| 1 18% 10% 100$ 108$| // its was wrong Amount Answer
правильный ответ 106.20 $
но я ошибаюсь, как замедлить это, помогите мне
$('tbody').delegate('.quantity,.price,.gst,.dsc', 'keyup', function() {
var tr = $(this).parent().parent();
var quantity = tr.find('.quantity').val();
var price = tr.find('.price').val();
var gst = tr.find('.gst').val();
var dcs = tr.find('.dcs').val();
var totalamountgst = (quantity * price * gst) / 100;
var totalamountdcs = (quantity * price * dcs) / 100;
var totalamounts = (quantity * price totalamountgst);
var totalamount = (totalamounts - totalamountdcs);
tr.find('.totalamount').val(totalamount);
total();
});
function total() {
var total = 0;
$('.totalamount').each(function(i, e) {
var totalamount = $(this).val() - 0;
total = totalamount;
});
$('.total').val(total ".00");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control quantity" name="qty[]" id="validationServer01" placeholder="QTY" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control gst " name="gst_amount[]" id="validationServer01" placeholder="GST" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control dcs " name="dcs_amount[]" id="validationServer01" placeholder="DCS" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="number" class="text-danger input-lg form-control price" name="purchase_rate[]" id="validationServer01" placeholder="RATE" value="" required pattern="" numbers="" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control totalamount" name="" id="validationServer01" placeholder="AMOUNT" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" disabled></td>
</tr>
</tbody>
</table>
Комментарии:
1. Пожалуйста, начните с правильного объяснения того, какой на самом деле должна быть ваша формула. (Мы могли бы определить это, посмотрев на нее, но нам не нужно было бы.)
2. @CBroe откройте эту ссылку omnicalculator.com/finance/discount добавьте те же значения, о которых я упоминал, после запуска моего кода, введите то же значение, что и в тот раз, когда вы получите разницу в сумме
3. Ваш вопрос должен быть автономным и не полагаться на внешние ресурсы для ясности. Поэтому, пожалуйста, объясните , какая формула должна быть здесь, вместо того, чтобы отсылать нас в другое место.
4. @CBroe я выполняю часть расчета, я добавляю 18% налога и 10% скидку при ставке 100 долларов, но это дает общую сумму 108 долларов, это неправильная общая сумма. правильный ответ 106.20 $, проблема в том, что он не дает надлежащего значения
5. @CBroe я хочу исправить эту общую сумму
Ответ №1:
Все скидки должны быть применены до расчета налога, поэтому:
$('tbody').delegate('.quantity,.price,.gst,.dsc', 'keyup', function() {
var tr = $(this).parent().parent();
var quantity = tr.find('.quantity').val();
var price = tr.find('.price').val();
var gst = tr.find('.gst').val();
var dcs = tr.find('.dcs').val();
var totalprice = quantity * price;
var totaldiscount = (totalprice * dcs) / 100;
var totalvatable = totalprice - totaldiscount;
var totalvat = (totalvatable * gst) / 100;
var totalamount = totalvatable totalvat;
tr.find('.totalamount').val(totalamount);
total();
});
function total() {
var total = 0;
$('.totalamount').each(function(i, e) {
var totalamount = $(this).val() - 0;
total = totalamount;
});
$('.total').val(total ".00");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control quantity" name="qty[]" id="validationServer01" placeholder="QTY" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control gst " name="gst_amount[]" id="validationServer01" placeholder="GST" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control dcs " name="dcs_amount[]" id="validationServer01" placeholder="DCS" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="number" class="text-danger input-lg form-control price" name="purchase_rate[]" id="validationServer01" placeholder="RATE" value="" required pattern="" numbers="" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control totalamount" name="" id="validationServer01" placeholder="AMOUNT" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" disabled></td>
</tr>
</tbody>
</table>
Комментарии:
1. спасибо, возможно ли показать всю сумму скидки, а также общее количество заполненных строк, например, показать общую сумму
Ответ №2:
Сначала нужно было вычесть dcs и к этому добавить gst. Лучше использовать parseInt
для значений.
$('tbody').delegate('.quantity,.price,.gst,.dsc', 'keyup', function() {
var tr = $(this).parent().parent();
var quantity = parseFloat(tr.find('.quantity').val());
var price = parseFloat(tr.find('.price').val());
var gst = parseFloat(tr.find('.gst').val());
var dcs = parseFloat(tr.find('.dcs').val());
var totalamount = quantity*price*(100-dcs)/100*(100 gst)/100;
tr.find('.totalamount').val(totalamount);
total();
});
function total() {
var total = 0;
$('.totalamount').each(function(i, e) {
var totalamount = $(this).val() - 0;
total = totalamount;
});
$('.total').val(total ".00");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control quantity" name="qty[]" id="validationServer01" placeholder="QTY" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control gst " name="gst_amount[]" id="validationServer01" placeholder="GST" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control dcs " name="dcs_amount[]" id="validationServer01" placeholder="DCS" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" autocomplete="off"></td>
<td> <input style="text-align:center;" type="number" class="text-danger input-lg form-control price" name="purchase_rate[]" id="validationServer01" placeholder="RATE" value="" required pattern="" numbers="" autocomplete="off"></td>
<td> <input style="text-align:center;" type="text" class="text-danger input-lg form-control totalamount" name="" id="validationServer01" placeholder="AMOUNT" value="" required pattern="[1-2-3-4-3-5-6-7-8-9-10-12] " numbers="onlynumbers" disabled></td>
</tr>
</tbody>
</table>
Комментарии:
1. спасибо, возможно ли показать всю сумму скидки, а также общее количество заполненных строк, например, показать общую сумму
2.спасибо, возможно ли показать всю сумму скидки, а также общее количество заполненных строк, например, показать общую сумму