2011-12-23 24 views
0

我一直在試圖想出一個辦法,使這項工作,但只得到儘可能接近「南」作爲結果。動態字段 - 增加對總

我有如下表:

 <table border="1" class="autoTable"> 

    <tr><td><input name="description[]" id="description" value="<?php echo $description; ?>" size="55" onKeyPress="return disableEnterKey(event)" /> 
    </td><td align="center"><input type="checkbox" name="stocked[]" id="stocked" value="<?php echo $stocked; ?>" size="5" onKeyPress="return disableEnterKey(event)" /> 
    </td><td><input name="quantity[]" id="quantity" value="<?php echo $quantity; ?>" size="5" onKeyPress="return disableEnterKey(event)" /> 
    </td><td><input name="partPrice[]" id="partPrice" value="<?php echo $partPrice; ?>" size="10" onKeyPress="return disableEnterKey(event)" /> 
    </td><td><input name="hours[]" id="hours" value="<?php echo $hours; ?>" size="10" onKeyPress="return disableEnterKey(event)" /> 
    </td><td><select name="rate[]" id="rate" onKeyPress="return disableEnterKey(event)"> 
    <?php 
     //Connect to mysql db and retrieve the rate options 
    ?> 
    </select> 
    </td><td><!--<span class="amount"></span>--><input name="total[]" id="total" size="10" class="amount" onKeyPress="return disableEnterKey(event)" /> 
    </td><td align="center"><input type="checkbox" name="approved[]" id="approved" value="<?php echo $approved; ?>" size="10" onKeyPress="return disableEnterKey(event)" /> 
    </td><td align="center"><img src="img/plus.png" width="25" height="25" id="addButton" title="Add New Row" class="addRow" /> 
    </td><td align="center"><img src="img/x.png" width="25" height="25" id="removeButton" title="Remove Row" class="delRow" /> 
    </td></tr> 
    </table> 

我想要做的是有總場顯示量x partPrice小時以上X率(其拉到形式的數據庫,並列出了一個選擇)。我更喜歡動態地做到這一點,以便它可以即時更新。我有添加和刪除按鈕,所以我們可以根據需要添加任意數量的行。

我也想有一個總在頁面的底部 - 但僅僅有添加的每一行,如果「認可」被點擊。

我一直在努力做的,至少暫時是這樣的jQuery:

 $('#hours').blur(function() { 
     $('tr').each(function(){ 
      var total = 0; 
      total = parseFloat($(this).find('input[name=quantity]').val()); 
      $(this).find('.amount').val(parseFloat(total)); 
     }); 
    }); 

這使得NaN,並且我不能完全弄清楚什麼我做錯了。我甚至沒有進入批准複選框或最終總數。

此外,如果我衝壓號寫入數量,價格和時間字段之前添加動態行,NaN的將顯示在每個總計。這可能是因爲我沒有指定數組,它只是使用class =「amount」(這是所有總數)的所有字段。

我能做些什麼,是用我的提交按鈕,它會拉動值的任何及所有領域,所以數據庫條目是不是一個問題 - 但計算總量動態似乎是。

我將不勝感激任何見解和幫助。

感謝

回答

0

改變這一行...

total = parseFloat($(this).find('input[name=quantity]').val()); 

...到...

total = parseFloat($(this).find('input[name=quantity]').val()) || 0; 

上一個空字符串,否則parseFloat()會產生NaNNaN是有毒的,如果它在你的數學中的任何地方,它總是會導致NaN

您還需要在內部循環之外聲明total,並且僅在結束時(循環外部)設置該值。

1

嘗試:

 
var total = 0; 
$('tr').each(function(){ 

      total += parseFloat($(this).find('input[name=quantity[]]').val()); 
      $(this).find('.amount').val(parseFloat(total)); 
     }); 

希望它可以幫助

+0

我想這一點,其中包括「|| 0」亞歷克斯的建議,以避免NaN的,但不幸的是,我沒有在總得到任何值領域。在這種情況下,我會添加數量並將其放入Total中,但這並未發生。 – 2011-12-23 05:18:49

+0

我設法得到它做數學題,通過添加類=「數字add_to_total量」的class =「數字add_to_total一部分」等使用此代碼: 'code' $(「 add_to_total」)變化(函數( ){ VAR總= 0; $()每個(功能( 「add_to_total。 」){ \t變種量= parseFloat($(「 量」。)VAL()。)|| 0; \t變種部分= parseFloat($(「。part」))。val())|| 0; \t var hours = parseFloat($(「。hours」)。val())|| 0; \t var rate = parseFloat($(「。rate」)。val())|| 0; total =(Number(quantity)* Number(part))+(Number(rate)* Number(hours)); }); $(「。is_total」)。val(total); }); 'code' – 2011-12-23 05:52:23

+0

現在唯一的問題是,它只會在第一個字段中工作,而不是額外的動態字段。如果可能,我需要一些幫助來完成這項工作。 @alex – 2011-12-23 05:55:44