2013-07-01 38 views
1

我想填充文本框值的平均值,並顯示在平均文本框中獲取的當前填充文本框平均jQuery中

問題:我可以計算出充滿文本框 的總和,但我沒有確定如何獲得填充文本框的數量,並獲得它們的平均值 就像兩個文本框是值爲5和6的文件那麼總數應該是11並且平均值應該是5.5(11/2)

我的代碼如下請檢查

HTML文件

<input type="text" value="" name="prj_usgjan" class="prj_usage" id="prj_usgjan"> 
<input type="text" value="" name="prj_usgfeb" class="prj_usage" id="prj_usgfeb"> 
<input type="text" value="" name="prj_usgmar" class="prj_usage" id="prj_usgmar"> 
<input type="text" value="" name="prj_usgapr" class="prj_usage" id="prj_usgapr"> 
<input type="text" value="" name="prj_usgmay" class="prj_usage" id="prj_usgmay"> 
<input type="text" value="" name="prj_usgjun" class="prj_usage" id="prj_usgjun"> 
<input type="text" value="" name="prj_usgjul" class="prj_usage" id="prj_usgjul"> 
<input type="text" value="" name="prj_usgaug" class="prj_usage" id="prj_usgaug"> 
<input type="text" value="" name="prj_usgsep" class="prj_usage" id="prj_usgsep"> 
<input type="text" value="" name="prj_usgoct" class="prj_usage" id="prj_usgoct"> 
<input type="text" value="" name="prj_usgnov" class="prj_usage" id="prj_usgnov"> 
<input type="text" value="" name="prj_usgdec" class="prj_usage" id="prj_usgdec"> 
<input type="text" readonly="readonly" name="prj_usgtot" class="prj_usgtot" id="prj_usgtot"> 
<input type="text" readonly="readonly" name="prj_usgavg" class="prj_usgavg" id="prj_usgavg"> 

JS文件

jQuery(".prj_usage").keyup(function(){ 
     var sum = 0; 
     jQuery('.prj_usage').each(function() { 
      sum += Number(jQuery(this).val()); 
     }); 
      jQuery('#prj_usgtot').val(sum); // get the sum and show that in total text box 
    }); 

回答

1

在這裏,我找到解決辦法,試試這個: -

jQuery(".prj_usage").keyup(function(){ 
     var sum = 0; 
     var avg = 0; 
      jQuery('.prj_usage').each(function() { 
      sum += Number(jQuery(this).val()); 
      }); 

     var $allx = jQuery(':text.prj_usage'); 
     var $emptyx = $allx.filter('[value=""]'); 
     var num = $allx.length - $emptyx.length ; 
     if(num > 0){ avg = Number(sum/num); } 
     jQuery('#prj_usgtot').val(sum); 
     jQuery('#prj_usgavg').val(avg.toFixed(2)); 
    });