我有下面的代码,它将字段的值相加并除以3。
<?php
while($peListar = mysqli_fetch_object($sqlListar){
.....
$listar .= "<td style='".$fundo."'><input type='text' name='ValorI[]' class='md-form-control' value=''></td>";
$listar .= "<td style='".$fundo."'><input type='text' name='ValorII[]' class='md-form-control' value=''></td>";
$listar .= "<td style='".$fundo."'><input type='text' name='ValorIII[]' class='md-form-control' value=''></td>";
$listar .= "<td style='".$fundo."'><input type='text' name='ValorFinal[]' class='md-form-control' value=''></td>";
.....
}
?>
<script>
$("[name^='NotaI']").on("input", function(){
var parent = $(this).closest(\"tr\");
var valorA = $("[name='ValorI[]']",parent).val() || 0;
var valorB = $("[name='ValorII[]']",parent).val() || 0;
var valorC = $("[name='ValorIII[]']",parent).val() || 0;
var valor1 = parseFloat(valorA.replace(',', '.'));
var valor2 = parseFloat(valorB.replace(',', '.'));
var valor3 = parseFloat(valorC.replace(',', '.'));
var somar = ((valor1+valor2+valor3)/3).toFixed(1);
$(\"[name='ValorFinal[]']\", parent).val(somar);
});
</script>
我想知道如何根据填充字段的数量更改除数,忽略空字段。例如:
如果用户填充2个字段并忽略1个字段,则除数将为2。
对不起我的英文
谢谢!
答案 0 :(得分:1)
只是一个简单的检查。请参阅以下评论。
let sum = 0,
count = 0,
average = 0;
$('input[name^=ValorI]').on('input', function(){
sum = 0;
count = 0;
$('input[name^=ValorI]').each(function(i, element){
let value = this.value.replace(',', '.'), // replace ',' with '.'
isEmpty = value == "",
isInvalid = isNaN(value);
// check if the value is empty or not
// if the value is not epmty, replace ',' with '.'
value = isEmpty ? 0 : value;
// count the input numbers, ignore NaN values or empty value
count = isInvalid || isEmpty ? count : ++count;
value = isInvalid ? 0 : parseFloat(value);
sum += value;
})
average = count > 0 ? (sum / count).toFixed(1) : 0;
$('input[name="ValorFinal[]"]').val(average || "");
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
ValorI: <input type='text' name='ValorI[]' class='md-form-control' value=''><br>
ValorII: <input type='text' name='ValorII[]' class='md-form-control' value=''><br>
ValorIII: <input type='text' name='ValorIII[]' class='md-form-control' value=''><br>
ValorFinal: <input type='text' name='ValorFinal[]' class='md-form-control' value=''>