根据数据类型汇总编辑框列表?

时间:2015-04-09 08:26:52

标签: javascript

我有一个包含值的编辑框列表。一些是费用(type-id =“1”),其他是收入(type-id =“2”)。

它们被定义为:

<input class="change-handled form-control" type-id="@sub.CategoryTypeId" sub-category-id="@sub.SubCategoryId" data-id="@sub.CategoryBudgetId" style="text-align: right; width: 100%" type="number" value="@(sub.BudgetAmount.HasValue ? sub.BudgetAmount.ToString() : "")" />

目前,我有一个javascript函数将它们全部加起来,并显示总数:

var total = 0;
        var $changeInputs = $('input.change-handled');
        $changeInputs.each(function (idx, el) {
                total += Number($(el).val());
        });
        $('#budgettedValue').text(total.toFixed(2));

这很有效。但是,我需要显示费用总额和收入总额。

所以,我希望它会像这样容易:

var total = 0;
        var $changeInputs = $('input.change-handled');
        $changeInputs.each(function (idx, el) {
            if ($(idx).attr('type-id') == 1) {
                totalExp += Number($(el).val());
            }
            if ($(idx).attr('type-id') == 2) {
                totalInc += Number($(el).val());
            }
        });

这个,不起作用。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

当您访问idx时,您正在使用jQuery包装索引attr。而是使用el作为元素。

此外,您不需要两个if,因为如果一个1类型不合适,那么它必须是2类型

$changeInputs.each(function (idx, el) {
   if ($(el).attr('type-id') == '1')
     totalExp += Number($(el).val());
   else  
     totalInc += Number($(el).val());
});