使用Javascript获取每个模式的总金额

Get total amount per mode using Javascript

本文关键字:金额 模式 Javascript 获取 使用      更新时间:2023-09-26
 <?php
    $ctr = 0;
    while($ctr <= 10){
    ?>
    <td><input required type='text' name='amount[<?echo $ctr; ?>]' class='amount'></td>
    <td><input required type='text' name='mode[<?echo $ctr; ?>]' value='Cash'></td>
    <?php
    $ctr++;
    }
    ?>
    Total Amount: <span class="total_amount">0.00</span>
    Total Cash : <span class="total_cash">0.00</span>
    Total Check: <span class="total_check">0.00</span>
$(document).on('blur','.amount',function () {
    var total = 0;
    var total_cash = 0;
    var total_check = 0;
    $('.amount').each(function () {
        total += parseFloat($(this).val());
    });
    $('.total_amount').html(total);
});

使用上面的代码,我可以得到我在输入量字段中编码的数字的总量。如何获得每个模式、现金(默认(和支票(用户可以将模式更改为支票(的总额?

如果你确定下一个输入宽度mode总是对应的,你可以使用JQuery.next。所以有必要检查每个参数的值是否为NaN。

$(document).on('blur','.amount',function () {
    var total = 0;
    var total_cash = 0;
    var total_check = 0;
    var val, mode;
    $('.amount').each(function () {
        val = parseFloat($(this).val());
        val = val ? val : 0;
        total += val;
        mode = $(this).next().val();
        switch(mode) {
            case "Check" : total_check += val; break;
            case "Cash"  : total_cash  += val; break;                
        } 
    });
    $('.total_amount').html(total);
    $('.total_cash').html(total_cash);
    $('.total_check').html(total_check);    
});

http://jsfiddle.net/ag0a78jd/

以下仅在索引一致的情况下有效(例如,每个amount[x]都有一个mode[x](:

var total = {};
$('.amount').each(function(idx)
    {
        var mode = $('[name="mode['+idx+']"');
        if (!total[mode.val()])
            total[mode.val()] = 0;
        total[mode.val()] += parseFloat($(this).val());
    }
);
console.log(total);

jsFiddle

使用jquery获取"amount"元素集中当前元素的索引。

var index = $( ".amount" ).index( this );

使用刚刚高于的指数获取相应的现金/支票元素值

var mode_value = $("input[name='mode["+index+"]']").val();

然后检查该值并将该值存储在右侧变量中

if (mode_value == "Cash")
total_cash = total_cash + $(this).val();
if (mode_value == "Check")
total_check = total_check + $(this).val();

整个代码必须在模糊事件内。