0

关于 JQuery 计算的快速问题。

假设我有一个带有每个项目复选框的表单和一个用于总行数的文本输入框...

第 1 项 - 10 美元,第 2 项 - 20 美元,第 3 项 - 30 美元,然后是行总计

然后另一排...

第 1 项 - 15 美元,第 2 项 - 25 美元,第 3 项 - 35 美元,然后是行总计

如何为每行选择的每个项目建立“行总计”?我尝试了一个 .each 和一个 .map 函数,它允许计算总数(基于“检查”的加法和减法),但转移到下一行的总行数,这显然违背了目的。我只能假设有人以前用过这个?

这是当前的代码(最初省略了,因为我觉得我离得很远。但如果你需要它在这里):

<?php
while($row = mysqli_fetch_array($result)){
    echo '
    <tr>
        <td>'.$row['pkgletter'].'</td>
        <td>'.$row['item1'].'<br />$'.$row['item1_price'].'</td>
        <td><input type="checkbox" class="lineitem" id="'.$row['pkgid'].'" value="'.$row['item1_price'].'" checked="" name="item1" /></td>
        <td>'.$row['item2'].'<br />$'.$row['item2_price'].'</td>
        <td><input type="checkbox" class="lineitem" id="'.$row['pkgid'].'" value="'.$row['item2_price'].'" checked="" name="item2" /></td>
        <td>'.$row['item3'].'<br />$'.$row['item3_price'].'</td>
        <td><input type="checkbox"  class="lineitem" id="'.$row['pkgid'].'" value="'.$row['item3_price'].'" checked="" name="item3" /></td>
        <td>$ <input class="linetotal" id="linetotal'.$row['pkgid'].'" size="10"    type="text" name="linetotal" /></td>
    </tr>';
}
?>

<script>
$(document).ready(function(){
    $(".lineitem").click(function() {
        var id = $(this).attr('id');
        var total = 0;
        $(".lineitem:checked").each(function() {
            total += parseInt($(this).val(), 10);
        });
        $('#linetotal' + id).val(total);
    });
});
</script>
4

2 回答 2

1

Aveendras 的答案看起来不错,但我假设您想要一个适用于所有行的代码块,而不是手动为每一行创建一个代码块。我建议您点击复选框。工作 jsFiddle:http: //jsfiddle.net/danieltulp/c8ruP/

html

<div id="line_01">
    <input type="checkbox"  value="10" />10
    <input type="checkbox"  value="20" />20
    <input type="checkbox"  value="30" />30
    <span class="total">Total: </span>
</div>

<div id="line_02">
    <input type="checkbox"  value="15" />15
    <input type="checkbox"  value="25" />25
    <input type="checkbox"  value="35" />35
    <span class="total">Total: </span>
</div>

jQuery

$("input").on("click", function(){
    var lineTotal=0;
    var selfID = "#"+$(this).parent().attr('id');
    $(selfID +" > input").each(function(){
        if($(this).is(':checked')){
            lineTotal+=parseInt($(this).val());
        }
    });
    $(selfID + " .total").text("Total: "+lineTotal);
});

我现在搜索了父母的 ID,因为我现在不知道如何做一些事情,比如$($this).("input").each(....如果有人可以改进这个,请做

于 2013-08-28T19:01:17.077 回答
0

html

<div id="line_01">
 <input type="checkbox"  value="10" />
 <input type="checkbox"  value="20" />
 <input type="checkbox"  value="30" />
</div>

<div id="line_02">
 <input type="checkbox"  value="15" />
 <input type="checkbox"  value="25" />
 <input type="checkbox"  value="35" />
</div>

jQuery

var lineOneTotal=0;

$('#line_01 > input').each(function(){
 if($(this).is(':checked')){
 lineOneTotal+=parseInt($(this).val());
}
});


var lineTwoTotal=0;

$('#line_02 > input').each(function(){
 if($(this).is(':checked')){
 lineTwoTotal+=parseInt($(this).val());
}
});

alert(line one:'+lineOneTotal+' , line two:'+lineTwoTotal);

因为我认为你想要这样的代码。

于 2013-08-28T18:26:00.230 回答