2013-08-28 82 views
0

快速問題與JQuery計算。jquery計算(行項目)

說我有一個複選框,每個項目和線路總一個文本輸入框形式...

項目1 - $ 10,第2項 - $ 20第3項 - $ 30,其後線路總

,然後另一行...

項目1 - $ 15日,第2項 - $ 25日,第3項 - $ 35再行總

它是如何將有可能建立 「行總計」 爲在每一行上選擇每個項目?我已經嘗試了一個.each和一個.map函數,它允許計算總數(基於'checked'的加法和減法),但轉移到下一行的總行數,這顯然違背了目的。我只能假設有人已經提交了這個問題?

下面是當前代碼(左明原來,因爲我覺得我的路要走,但如果你在這裏需要它。):

<?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> 
+0

這段代碼在這裏有點誤導..這就是爲什麼我原來把它排除在外了。我只是循環基於表查詢的複選框和linetotal輸入。所以它可能會返回1行或60,這正是爲什麼我需要能夠爲每行建立一個總數的原因。 – pm284

回答

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(....如果有人可以提高在此,請做

+0

這正是我所期待的。萬分感謝。 – pm284

+0

從那裏總計所有總數的好方法? – pm284

+0

從span中刪除Total:部分,所以它只是總值,然後使用如下所示:'var finalTotal = 0; $(「。total」)。each(function(){finalTotal = finalTotal + $(this).text();});' –

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); 

因爲我認爲你想要一些這樣的代碼。

+0

嗯..想知道如何解析/創建一個PHP的聲明與div ID。 – pm284

+0

我也想感謝你的時間。這個功能在您制定出來的時候確實有效。 – pm284

+0

不用客氣。 –