关于每一行的onkeyup发生和计算

时间:2016-04-16 17:29:29

标签: javascript php jquery mysql ajax

我正在做一个从数据库中提取的货币表。因此,每种货币都会在while循环中创建,用户必须输入它们的值并在onkeyup上计算它们。问题是,我创建的基于货币数据计算每个td的功能非常有效。转换率仅适用于最后一个TD

这是我的代码,

<div class="modal-content">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">MASUKKAN SETORAN UNTUK = <b><?php echo $sr; ?></b> ~ <?php echo $flightnum; ?></h4>
    </div>
        <div class="modal-body">
            <table class="table table-striped" id="paymentTable">
                <thead>
                    <th>NO</th>
                    <th>MATA UANG</th>
                    <th>RATE</th>
                    <th>SETORAN</th>
                    <th>TOTAL IDR</th>
                </thead>
                <?php
                $i = 1;
                    while ($row = $result->fetch_array()) {
                        echo "<tr>";
                            echo "<td>$row[curr_id]</td>";
                            echo "<td>$row[curr_code] - $row[curr_desc]</td>";
                            echo "<td>$row[conv_rate]</td>";
                            echo "<td><input type='number' onkeyup='processCurr($i);' id='inputCurr$i'/></td>";
                            echo "<td><label id='calculatedCurr$i'></label></td>";
                        echo "</tr>";
                        $i++;
                    }
                ?>
            </table>
        </div>
</div>

和javascript函数,

<script>
    function processCurr(param){
        var inputcurr= $('#inputCurr'+param).val();
        $('#paymentTable tr').each(function() {
            var convRate = $(this).find("td").eq(2).html();
            $('#calculatedCurr'+param).html(inputcurr * convRate);

        });
    }
</script>

因此每个TD的convRate都是相同的,我不想要。每一行都应该从数据库中提取自己的convRate并调用它的函数来计算IDR中使用onkeyup的总数。

请帮帮我,..

这里我附上了截图 screenshot

1 个答案:

答案 0 :(得分:0)

您的代码存在问题

$('#calculatedCurr'+ param).html(inputcurr * convRate);

这里convRate的最终值将是与inputcurr相乘的最后一个表行值,以给出结果。在每次迭代时,$('#calculatedCurr'+ param).html(inputcurr * convRate)值被覆盖。

我假设您想要的是输出为总IDR = RATE * SETORAN。您的代码可以进行优化以获得答案。您还应该分配一些唯一的ID值来获取您的convRate。优化的解决方案如下所示。< / p>

PHP代码

 while ($row = $result->fetch_array()) {
                        echo "<tr>";
                            echo "<td>$row[curr_id]</td>";
                            echo "<td>$row[curr_code] - $row[curr_desc]</td>";
                            echo "<td><span id='convRate".$i."'>$row[conv_rate]</span></td>";
                            echo "<td><input type='number' onkeyup='processCurr(".$i.");' id='inputCurr".$i."'/></td>";
                            echo "<td><label id='calculatedCurr".$i."'></label></td>";
                        echo "</tr>";
                        $i++;
                    }

Javascript代码

<script>
    function processCurr(param){
        var inputcurr= $('#inputCurr'+param).val();
        var convRate=$('#convRate'+param).val();
        $('#calculatedCurr'+param).html(inputcurr * convRate);   

    }
</script>