简体   繁体   English

HTML Javascript 简单的数学验证表格 function

[英]HTML Javascript simple validation form with maths function

I'm writing a simple inventory webpage with items used/issued to get subtracted from total stock and the should be in multiples of 50, All working fine except a small glitch.我正在编写一个简单的库存网页,其中包含用于从总库存中减去的项目,并且应该是 50 的倍数,除了一个小故障外,所有工作都很好。 The Javascript isn't giving me balance, its adding the items fine in total variable, calculating and showing if its multiple of 50 or not. Javascript 没有给我平衡,它在总变量中添加项目,计算并显示它是否是 50 的倍数。 All Good.都好。

BUT

just not giving me balance.只是不给我平衡。 What has gone wrong?出了什么问题? I checked many time but to me all seems fine and in place.我检查了很多次,但对我来说一切似乎都很好。 Help Please.请帮忙。

 function findTotal() { var stock = document.getElementsByName('stock'); var arr = document.querySelectorAll('[name="vala"], [name="valb"], [name="valc"]'); //manual selection of names 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; if ((tot % 50) == 0) { document.getElementById('new').value = "correct"; } else { document.getElementById('new').value = "incorrect"; } return tot; var bal = number(stock - tot); document.getElementById('balance').value = bal; return bal; } function ValidateTotal() { var y = findTotal(); if ((y % 50) == 0) { return true; } else { alert("Total Must be in multiples of 50"); return false; } }
 <form class="contact100-form validate-form" onsubmit="return ValidateTotal(this)" method="post" action="portal.php" class="simple-form"> <span class="contact100-form-title"> Portal <br><span style="color:red;"><span style="font-size: 80%"> Data Submission for '.$datadate.' </red> </span></span> </span> </div> <div class="wrap-input100 validate-input" data-validate="Value 1"> <input class="input100" onblur="findTotal()" type="number" step="1" name="vala" id="vala" placeholder="Value A"> </div> <div class="wrap-input100 validate-input" data-validate="Value 2"> <input class="input100" onblur="findTotal()" type="number" step="1" name="valb" id="valb" placeholder="Value B"> </div> <div class="wrap-input100 validate-input" data-validate="Value 3"> <input class="input100" onblur="findTotal()" type="number" step="1" name="valc" id="valc" placeholder="Value C"> </div> <div class="wrap-input100 validate-input" data-validate="Value 4"> <input class="input100" type="number" step="1" name="vald" id="vald" placeholder="Value D not in total"> </div> <div class="wrap-input100 validate-input" data-validate="Total"> <input class="input100" type="number" step="1" name="total" id="total" placeholder="Total ABC"> </div> <div class="wrap-input100 validate-input" data-validate="stock"> <input class="input100" onblur="findTotal()" type="number" step="1" name="stock" id="stock" placeholder="Total Stock"> </div> <div class="wrap-input100 validate-input" data-validate="balance"> <input class="input100" onblur="findTotal()" type="number" step="1" name="balance" id="balance" placeholder="balance"> </div> <span style="color:red;">Total: <input type="text" name="total" id="total" size="2" readonly="readonly">Validations: <input type="text" name="new" id="new" size="5" readonly="readonly"></span></span> </div> <div class="container-contact100-form-btn"> <button class="contact100-form-btn"> Submit </button> </div> </form> </div> </div> </div>

you cant use getElementsByName because with getElementsByName it gives you nodelist.in that case you have specify the index:您不能使用 getElementsByName ,因为使用getElementsByName它会为您提供 nodelist。在这种情况下,您已经指定了索引:

getElementsByName("stock")[0] . getElementsByName("stock")[0]

i changed it to document.getElementById('stock').value;我将其更改为document.getElementById('stock').value; getting the value straight from here so you woulnt need to parseInt or .valueAsNumber .直接从这里获取值,因此您不需要parseInt.valueAsNumber

var bal = stock - tot; this will work fine这会很好用

 function findTotal() { var stock = document.getElementById('stock').value;/*<-------byId*/ var arr = document.querySelectorAll('[name="vala"], [name="valb"], [name="valc"]'); //manual selection of names 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; if ((tot % 50) == 0) { document.getElementById('new').value = "correct"; } else { document.getElementById('new').value = "incorrect"; } var bal = stock - tot; document.getElementById('balance').value = bal; return bal; return tot; } function ValidateTotal() { var y = findTotal(); if ((y % 50) == 0) { return true; } else { alert("Total Must be in multiples of 50"); return false; } }
 <form class="contact100-form validate-form" onsubmit="return ValidateTotal(this)" method="post" action="portal.php" class="simple-form"> <span class="contact100-form-title"> Portal <br><span style="color:red;"><span style="font-size: 80%"> Data Submission for '.$datadate.' </red> </span></span> </span> </div> <div class="wrap-input100 validate-input" data-validate="Value 1"> <input class="input100" onblur="findTotal()" type="number" step="1" name="vala" id="vala" placeholder="Value A"> </div> <div class="wrap-input100 validate-input" data-validate="Value 2"> <input class="input100" onblur="findTotal()" type="number" step="1" name="valb" id="valb" placeholder="Value B"> </div> <div class="wrap-input100 validate-input" data-validate="Value 3"> <input class="input100" onblur="findTotal()" type="number" step="1" name="valc" id="valc" placeholder="Value C"> </div> <div class="wrap-input100 validate-input" data-validate="Value 4"> <input class="input100" type="number" step="1" name="vald" id="vald" placeholder="Value D not in total"> </div> <div class="wrap-input100 validate-input" data-validate="Total"> <input class="input100" type="number" step="1" name="total" id="total" placeholder="Total ABC"> </div> <div class="wrap-input100 validate-input" data-validate="stock"> <input class="input100" onblur="findTotal()" type="number" step="1" name="stock" id="stock" placeholder="Total Stock"> </div> <div class="wrap-input100 validate-input" data-validate="balance"> <input class="input100" onblur="findTotal()" type="number" step="1" name="balance" id="balance" placeholder="balance"> </div> <span style="color:red;">Total: <input type="text" name="total" id="total" size="2" readonly="readonly">Validations: <input type="text" name="new" id="new" size="5" readonly="readonly"></span></span> </div> <div class="container-contact100-form-btn"> <button class="contact100-form-btn"> Submit </button> </div> </form> </div> </div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM