gpt4 book ai didi

jquery 每个动态行的总计和小计仅计算第一行

转载 作者:行者123 更新时间:2023-12-01 02:58:11 27 4
gpt4 key购买 nike

我正在尝试构建一个动态网格样式计算器,以便用户可以计算某些东西的成本,他们可以根据需要添加尽可能多的行来捕获所有组件详细信息。我现在需要做的就是让我的 jQuery 也变得动态,这样它就会计算添加的每一行的每个 TotalLine Total 。因为我现在已经得到了代码,所以它仅适用于计算器的第一行

Calculator

$(document).ready(function () {
$('.used-amount input[type="text"]')
.on("propertychange, change, keyup, paste, input", function () {
var usedtotal = $(this).val() * $('.used-cost input[type="text"]').val();
$('.used-total').text(usedtotal);
});

$('.used-cost input[type="text"]')
.on("propertychange, change, keyup, paste, input", function () {
var usedtotal = $(this).val() * $('.used-amount input[type="text"]').val();
$('.used-total').text(usedtotal);
});

$('.wastage-cost input[type="text"]')
.on("propertychange, change, keyup, paste, input", function () {
var usedtotal = $(this).val() * $('.wastage-amount input[type="text"]').val();
$('.wastage-total').text(usedtotal);
});

$('.wastage-cost input[type="text"]')
.on("propertychange, change, keyup, paste, input", function () {
var usedtotal = $(this).val() * $('.wastage-amount input[type="text"]').val();
$('.wastage-total').text(usedtotal);
});

$('.calculator input[type="text"]')
.on("propertychange, change, keyup, paste, input", function () {
var linetotal =
($('.used-amount input[type="text"]').val()
* $('.used-cost input[type="text"]').val())
+ ($('.wastage-amount input[type="text"]').val()
* $('.wastage-cost input[type="text"]').val())
$('.line-total').text(linetotal);
});
});

每一行都是 Razor 部分 View :

@model TheWorkshop.Web.Models.Edit.CalculatorViewModel

<tr class="calculator-detail">
<td class="component-type">@Html.EnumDropDownListify("ComponentType", @Model.ComponentType)</td>
<td class="component">@Html.DropDownListFor(model => model.SelectedComponentId, Model.ComponentSelectList, "Select...")</td>
<td class="used-amount">@Html.EditorFor(model => model.UsedAmount)</td>
<td class="used-cost">@Html.EditorFor(model => model.UsedCost)</td>
<td class="used-total"></td>
<td class="wastage-amount">@Html.EditorFor(model => model.WastageAmount)</td>
<td class="wastage-cost">@Html.EditorFor(model => model.WastageCost)</td>
<td class="wastage-total"></td>
<td class="line-total"></td>
</tr>

单击按钮时我添加的内容

$(document).ready(function ($) {
$("button").click(function () {
$.get('@Url.Action("AddCalculatorRow", "Workshop",
new { id = Model.Id } )', function (data) {
$(data).hide().appendTo('.calculator tbody').fadeIn(2000);
});
});
});

和 Controller

public ActionResult AddCalculatorRow()
{
var components = Session.QueryOver<Component>()
.OrderBy(c => c.Name).Asc.List<Component>();
var modelView = new CalculatorViewModel() { Components = components };

return PartialView("_CalculatorRow", modelView);
}

编辑
我已经得到了已用和成本总计以及浪费和成本总计。但似乎无法让 LineTotal 工作并遵循 @JeffB 的评论,它现在看起来像这样:

$(document)
.on("propertychange, change, keyup, paste, input",
'.calculator input[type="text"]', function () {
var linetotal =
($(this).parent().siblings('.used-amount').find('input').val() *
$(this).parent().siblings('.used-cost').find('input').val())
+ ($(this).parent().siblings('.wastage-amount').find('input').val() *
$(this).parent().siblings('.wastage-cost').find('input').val());
$(this).parent().siblings('.line-total').text(usedtotal);
});

编辑2
这将教我复制和粘贴...
上面代码中的错误是我已将所有 4 个单元格的总和分配给了 linetotal 变量,但是在更新 line-total 单元格时有 usedtotal,这没什么!将其更改为 linetotal 变量修复了该问题,现在所有单元格都可以正确计算。

最佳答案

您正在使用 on() 的非委托(delegate)版本,该版本不会绑定(bind)到调用后添加的 UI 元素。尝试改变

$('.used-amount input[type="text"]')
.on("propertychange, change, keyup, paste, input", function () {
var usedtotal = $(this).val() * $('.used-cost input[type="text"]').val();
$('.used-total').text(usedtotal);
});

$(document)
.on("propertychange, change, keyup, paste, input",
'.used-amount input[type="text"]', function () {
var usedtotal = $(this).val() * $('.used-cost input[type="text"]').val();
$('.used-total').text(usedtotal);
});

有关详细信息,请参阅

中的 直接事件和委托(delegate)事件部分

http://api.jquery.com/on/

关于jquery 每个动态行的总计和小计仅计算第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15774698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com