如何在JavaScript或jQuery中只计算重复字段foreach循环的单个值?

时间:2017-03-07 10:12:23

标签: javascript jquery loops sum calculated-field

我想根据循环或相同字段名称中的其他字段输入来更改总金额的值。

这是我的表格。

<?php
    $sudentname = $_POST['sudentname'];
    $admissionnmbr = $_POST['admissionnmbr'];
    $amount = $_POST['amount'];
?>
<form method="POST" action="/" >
    <table class="paymentConfirmTblMutiSt">
        <tbody> 
            <thead>
                <tr>
                    <th>Admission No</th>
                    <th>Amount</th>
                </tr>
            </thead>

        <?php
        foreach($sudentname as $key => $v){
            $totalAmount +=$amount[$key]; // to sum all of amount
        ?>

                    <tr>
                        <td><input type="text" name="sudentname[]" value="<?= $sudentname[$key] ?>"></td>
                        <td><input type="text" name="admissionnmbr[]" value="<?= $admissionnmbr[$key] ?>"></td>
                        <td><input type="text" name="amount[]" class="inputChangeVal" value="<?= number_format((float)$amount[$key], 2, '.', ',') ?>"></td>
                    </tr>
        <?php } ?>
        </tbody>
    </table>
    Total payable : <input type="text" name="totalAmount" value="<?=number_format((float)$totalAmount, 2, '.', ','); ?>" class="totalAmount"/>
</form>

所以这显示了学生的姓名和入学人数的数量和详细信息,这些数字和入学人数在之前的表格中填写。 如果用户为两名学生付费,这将是这样的:http://prnt.sc/eh0ygd(我没有显示上面代码中的所有字段)

现在,如果用户想要更改学生数量,他可以点击字段并更改它,因为这些是文本输入。

我的问题是,当用户更新“amount[]”时,应该 calculted(SUM),并且应该在“TotalAmount”中显示 由于这些字段的值/名称是循环或同名,我很困惑如何做到这一点。

代码下的实时更改工作正常。

<script>
jQuery(document).ready(function()
    {
        function updateTotal()
        {
            var price = parseFloat(jQuery(".inputChangeVal").val());
            var total = (price + 1) * 1.05; // I want to change this line to SUM the Amount[]
            var total = total.toFixed(2);
            jQuery(".totalAmount").val(total);
        }
        jQuery(document).on("change, keyup", ".inputChangeVal", updateTotal);
    });
</script>

我只是用另一个计算来检查var total。 当用户在'inputChangeVal'/ in amount[]

中进行更改时,此选项会更改'totalAmount'中的值

我想要的是与amount[]进行对比,并在用户更新'totalAmount'字段时在amount[]中显示

我如何为此更新jQuery?

2 个答案:

答案 0 :(得分:0)

在表示Amount

的输入字段上使用jQuery迭代循环

E.g:

Sum = 0;
jQuery("input.inputChangeVal").each(function( index, value ) {
    Sum += parseInt(jQuery(this).val()); //index represents the number of input (array elements 0, 1, 2, etc.)
    });
jQuery(".totalAmount").val(Sum);

Sum现在表示Amount输入字段中值的总和

答案 1 :(得分:0)

可能你需要这样的东西:

<script>
jQuery(document).ready(function()
    {
        function updateTotal()
        {
            var price = 0;

            jQuery(".inputChangeVal").each(function(){
                 var t = parseFloat( $(this).val() );
                 price = price + t;
            });

            var total = total.toFixed(2);
            jQuery(".totalAmount").val(total);
        }
        jQuery(document).on("change, keyup", ".inputChangeVal", updateTotal);
    });
</script>       

编辑:从parseFloat中删除了行和基数参数...