2017-01-16 68 views
0

我试图从输入中获取平均值。基于jQuery的输入获取平均值

我有5个输入字段。我想要做这样的事情:

n = total of inputed field (has value) 
total = n1 + n2 + ... + n5/n 

例如:

1 + 2 + 3/3 
1 + 2 + 3 + 4/4 
1 + 2 + 3 + 4 + 5/5 

平均是基于多少用户输入文本字段。这是我到目前为止所尝试的。请检查一下。

用下面的脚本。我唯一能总结,我不能为我的英语不好做average

$(document).ready(function() { 
 
    $(document).on("change", ".kd1", function() { 
 
    $('table tr').each(function() { 
 
     var valid_labels = 0; 
 
     var newval = 0; 
 
     var total = $('.kd1', this).get().reduce(function(sum, elem) { 
 
     return sum + +$(elem).val(); 
 
     }, 0) 
 
     if (!isNaN(total)) { 
 
     valid_labels += 1; 
 
     newval += total; 
 
     } 
 
     $('.result1', this).val(newval/valid_labels); 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table class="table"> 
 
    <tr> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='result1'></td> 
 
    </tr> 
 
    <tr> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='kd1'></td> 
 
    <td><input type='text' size='5' class='result1'></td> 
 
    </tr> 
 
</table>
遗憾。

参考:https://stackoverflow.com/a/14899614/6354277

+0

有没有跟你写的,你需要帮助的特定代码的问题? –

+0

@RoryMcCrossan我只能够总结和我不能做平均 – YVS1102

回答

2

遍历输入字段,添加其是与该增量计数沿非空值。

$(document).ready(function() { 
 
    $(document).on("input", ".kd1", function() { 
 
    $('table tr').each(function() { 
 
     // variables for holding total and count 
 
     var total = 0, 
 
     count = 0; 
 

 
     // get all input fields and iterate over them 
 
     $('.kd1', this).each(function() { 
 
     // check the value is non-empty 
 
     if (this.value.trim() != '') { 
 
      // increment count for calculating average 
 
      count++; 
 
      // update total based on input value 
 
      // treat input value as 0 if number parsing produces NaN 
 
      total += (Number(this.value.trim()) || 0); 
 
     } 
 
     }); 
 
     // calculate and update the average although treat as zero if NaN 
 
     $('.result1', this).val(total/count || 0); 
 
    }); 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table class="table"> 
 
    <tr> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='result1'> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='kd1'> 
 
    </td> 
 
    <td> 
 
     <input type='text' size='5' class='result1'> 
 
    </td> 
 
    </tr> 
 
</table>

+3

你忘了在计算中忽略空白输入 –

+0

当一个输入没有价值时,他应该在你的计算中被忽略,不是?如果我在第一行输入2和4,那么平均值是1.2,但它应该是3.问题指定'n =输入字段总数(有值)',所以你不应该忽略那些没有? –

+1

@GilleQ。 :是的,你正确...更新 –