すべての入力の合計が正確に100であり、数字のみであることを確認するには、以下のフォームを検証する必要があります。これまでのところ100以上であれば検証できますが、100未満であれば検証してみると、すべての値が入力される前に警告が表示されます。あなたはこれを防ぐことができますJavaScript形式の検証合計100
<form name="myForm" id="form1">
<input oninput="findTotal()" type="text" name="qty" id="qty1" class="hvr-pop"/> <br>
<input oninput="findTotal()" type="text" name="qty" id="qty2" class="hvr-pop"/> <br>
<input oninput="findTotal()" type="text" name="qty" id="qty3" class="hvr-pop"/> <br>
<input oninput="findTotal()" type="text" name="qty" id="qty4" class="hvr-pop"/> <br>
<input oninput="findTotal()" type="text" name="qty" id="qty5" class="hvr-pop"/><br>
<input oninput="findTotal()" type="text" name="qty" id="qty6" class="hvr-pop"/><br>
<textarea type="text" name="total" id="total" class="hvr-pop" readonly placeholder="Must total 100"></textarea>
</form>
<script>
function findTotal(){
"use strict";
var arr = document.getElementsByName('qty');
var tot=0;
for(var i=0; i<arr.length;i++){
if(parseInt(arr[i].value)) {
tot += parseInt(arr[i].value);
}
}
}
document.getElementById('total').value = tot;
// check that weightage scores = 100
if (tot > 100) {
alert("Please make sure numbers total 100");
document.getElementByName("qty").value = null;
return false;
}
}
<script>
二つの方法:1.任意の 'qty'入力が空の場合、関数を終了しfindTotal()' 'の先頭にif文で置きます。 2.ボタンクリックからfindTotal()を実行します。これは、すべての 'qty'を入力した後でクリックできます。 – neilsimp1
ありがとう、はい、私はオプション2を考えましたが、最適ではありません。私はオプション1は、ユーザーが値を入力すると、findTotal()がそれぞれを追加しているので動作しないと思います。その場合、空の値が計算されます – invincibleme
その場合は、ループしている間に入力が空であるかどうかをチェックし、フラグを設定してください。ループの後で、フラグがtrueの場合、 'alert()'を返す/しない – neilsimp1