2011-12-16 298 views
2

嗨,我得到了以下jquery片段(請參閱jsfiddle)來計算行的總和。
另外,我想使用總計算百分比。我嘗試通過在自己的代碼中添加一些代碼來計算百分比,但我無法成功找到它。我在jquery noob,所以我需要你的幫助。從jquery中總計算百分比

$(function() { 
var total = 0, 
    $tableTotal = $('.result'); 

$('tr[data-total]').each(function() { 
    var $row = $(this); 
    total += $row.data('total'); 
    $row.find('input').each(function() { 
     var $input = $(this); 
     $input.data('value', parseVals($input.val())) 
     $input.keyup(function() { 
      var currRowTot = $row.data('total'); 
      var currInputVal = parseVals($input.val()); 
      var diff = currInputVal - $input.data('value'); 
      $input.data('value', currInputVal) 

      var newRowTot = currRowTot + diff; 
      $row.data('total', newRowTot).find('.total').text(newRowTot) 
      $tableTotal.trigger('changeTotal', [diff]) 
     }); 
    }); 

}) 

$tableTotal.data('total', total).val(total).on('changeTotal', function(e, rowDiff) { 
    var currTotal = $(this).data('total') + rowDiff; 
    $(this).data('total', currTotal).val(currTotal); 

}) 


}); 

function parseVals(val) { 
return (val != '') ? parseInt(val) : 0; 
} 

請幫幫我!!

+2

你能有些細胞添加到您的JS提琴,以顯示你想要ŧ他的百分比是什麼,更重要的是,它是一個*的百分比*? – 2011-12-16 08:54:18

+0

用於查找您可以在代碼中使用公式的百分比:但是您需要總值來計算例如百分比。 900從1000,所以它會是90%`(900/1000)* 100`所以這裏是你的總價值找到百分比。 – Murtaza 2011-12-16 08:58:43

回答

1

你可以這樣做(此添加一列,以每持有每個輸入後計算的百分比被修改的行:

$(function() { 
    var total = 0, 
     $tableTotal = $('.result'); 

    $('tr[data-total]').each(function() { 
     var $row = $(this); 
     total += $row.data('total'); 
     $row.find('input').each(function() { 
      var $input = $(this); 
      $input.data('value', parseVals($input.val())) 
      $input.keyup(function() { 
       var currRowTot = $row.data('total'); 
       var currInputVal = parseVals($input.val()); 
       var diff = currInputVal - $input.data('value'); 
       $input.data('value', currInputVal) 

       var newRowTot = currRowTot + diff; 
       $row.data('total', newRowTot).find('.total').text(newRowTot) 
       $tableTotal.trigger('changeTotal', [diff]); 
       var tableTotalSum = $tableTotal.val(); 
       var percent = newRowTot * 100/tableTotalSum; 
       $rowPercent = $row.find('.percent') 

       var percentage = percent.toFixed(2); 
       $rowPercent.text(percentage); 
       otherPercentage = 100 - percentage; 
       $rowPercent.closest('table').find('.percent').not($rowPercent).text(otherPercentage .toFixed(2)); 
      }); 
     }); 

    }) 

    $tableTotal.data('total', total).val(total).on('changeTotal', function(e, rowDiff) { 
     var currTotal = $(this).data('total') + rowDiff; 
     $(this).data('total', currTotal).val(currTotal); 
     return currTotal; 

    }) 


}); 



function parseVals(val) { 
    return (val != '') ? parseInt(val) : 0; 
} 

小提琴這裏http://jsfiddle.net/Mpayr/28/

編輯 - 有我糾正我的代碼中的錯誤

編輯 - 2多了一個編輯來糾正小毛刺http://jsfiddle.net/Mpayr/30/