2013-05-09 127 views
1

我正在處理基於Excel電子表格的項目,我需要計算預算等。表中有各種類別,我需要計算小計的每個類別。這裏有一個截圖,使其更清晰: http://i.imgur.com/loyLbW7.png使用類名稱計算類別分部的小計

我的問題是,我不知道如何計算每個類別的subtoal。現在,我有$('。subcat100 .budget')。each(function()。類「subcat100」連接到tr並且爲每個類別部分(subcat100,subcat200,subcat300等)進行更改。 。值是基於關閉存儲在數據庫中的子類別號我將如何把所有這些類和遍歷他們

jQuery的:

$(document).ready(function() { 

     $('input[name="txtQuantity[]"],input[name="txtUnitCost[]"]').change(function(e) { 
      var budget = 0; 
      var $row = $(this).parent().parent(); 
      var quanity = $row.find('input[name="txtQuantity[]"]').val(); 
      var unitcost = $row.find('input[name="txtUnitCost[]"]').val(); 
      budget = parseFloat(quanity * unitcost); 
      var decimal = budget.toFixed(2); 
      $row.find('.budget').val(decimal); 

      var sum = 0; 
      $('.subcat100 .budget').each(function() { 
       var budgets = $(this).val(); 
       console.log(budgets); 
       if (IsNumeric(budgets)) { 
        sum += parseFloat(budgets, 10); 
       } 
      }); 
      $('.subcat100 .budgetsubtotal').val(sum); 
     }); 

     function IsNumeric(input) { 
      return (input - 0) == input && input.length > 0; 
     } 

    }); 

HTML:

<table> 
     <tbody> 
      <tr class="subcat100"> 
       <td> 
        <span name="txtItemCode[]"><strong>100</strong></span> 
       </td> 
       <td colspan="7"> 
        <span name="txtSubCategoryName[]" class="100"><strong>Land Purchase Costs</strong></span> 
       </td> 
      </tr> 
      <tr class="subcat100"> 
       <td> 
        <input type="text" name="txtSubItemCode[]" size="10" readonly="readonly" value="101"> 
       </td> 
       <td> 
        <input type="text" name="txtItem[]" size="50" readonly="readonly" value="Purchase price"> 
       </td> 
       <td> 
        <input type="text" name="txtUnit[]" size="10" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtQuantity[]" class="integer" size="10" value="1"> 
       </td> 
       <td> 
        <input type="text" name="txtUnitCost[]" class="monetary" size="10" value="299.99"> 
       </td> 
       <td> 
        <input type="text" name="txtBudget[]" class="monetary budget" size="10" readonly="readonly" value="299.99"> 
       </td> 
       <td> 
        <input type="text" name="txtActual[]" class="monetary" size="10" value="249.99"> 
       </td> 
       <td> 
        <input type="text" name="txtDifference[]" class="monetary difference" size="10" readonly="readonly" value="50.00"> 
       </td> 
      </tr> 
      <tr class="subcat100"> 
       <td> 
        <input type="text" name="txtSubItemCode[]" size="10" readonly="readonly" value="110"> 
       </td> 
       <td> 
        <input type="text" name="txtItem[]" size="50" readonly="readonly" value="Realtor's fees"> 
       </td> 
       <td> 
        <input type="text" name="txtUnit[]" size="10" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtQuantity[]" class="integer" size="10" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtUnitCost[]" class="monetary" size="10" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtBudget[]" class="monetary budget" size="10" readonly="readonly" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtActual[]" class="monetary" size="10" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtDifference[]" class="monetary difference" size="10" readonly="readonly" value=""> 
       </td> 
      </tr> 
      <tr class="subcat100"> 
       <td> 
        <input type="text" name="txtSubItemCode[]" size="10" readonly="readonly" value="120"> 
       </td> 
       <td> 
        <input type="text" name="txtItem[]" size="50" readonly="readonly" value="Due diligence"> 
       </td> 
       <td> 
        <input type="text" name="txtUnit[]" size="10" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtQuantity[]" class="integer" size="10" value="15"> 
       </td> 
       <td> 
        <input type="text" name="txtUnitCost[]" class="monetary" size="10" value="45.00"> 
       </td> 
       <td> 
        <input type="text" name="txtBudget[]" class="monetary budget" size="10" readonly="readonly" value="675.00"> 
       </td> 
       <td> 
        <input type="text" name="txtActual[]" class="monetary" size="10" value="700.00"> 
       </td> 
       <td> 
        <input type="text" name="txtDifference[]" class="monetary difference" size="10" readonly="readonly" value="-25.00"> 
       </td> 
      </tr> 
      <tr class="subcat100"> 
       <td colspan="5"> 
        <span><strong>Subtotal</strong></span> 
       </td> 
       <td> 
        <input type="text" name="txtSubTotalBudget[]" class="budgetsubtotal" size="10" readonly="readonly" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtSubTotalActual[]" class="actualsubtotal" size="10" readonly="readonly" value=""> 
       </td> 
       <td> 
        <input type="text" name="txtSubTotalDifference[]" class="differencesubtotal" size="10" readonly="readonly" value=""> 
       </td> 
      </tr> 
     </tbody> 
    </table> 

回答

0

嗯,我結束了這樣做:

var itemcodes = <?php echo json_encode($arrItemCodes);?>; 

    $('input[name="txtQuantity[]"],input[name="txtUnitCost[]"]').change(function(e) { 
     var budget = 0; 
     var $row = $(this).parent().parent(); 
     var quanity = $row.find('input[name="txtQuantity[]"]').val(); 
     var unitcost = $row.find('input[name="txtUnitCost[]"]').val(); 
     budget = parseFloat(quanity * unitcost); 
     $row.find('.budget').val(budget.toFixed(2)); 

     $.each(itemcodes, function(intIndex, objValue) { 
      var sum = 0; 
      $('.subcat' + objValue + ' .budget').each(function() { 
       var budgets = $(this).val(); 
       console.log(budgets); 
       if (IsNumeric(budgets)) { 
        sum += parseFloat(budgets, 10); 
       } 
      }); 
      $('.subcat' + objValue + ' .budgetsubtotal').val(sum.toFixed(2)); 
     }); 
    }); 

打開其他建議!