输入验证只工作一次
Input validation only working once
我试图创建一个脚本,将采取2个输入和计算总和。我希望在计算发生之前验证两个输入-输入必须在0到10之间。
然而,当我在两个字段(例如50)中输入超过10的值时,我只得到一个验证错误,而不是两个。
怎么了?
function calc() {
var x, y, z, text1, text2;
// Get the value of the input field with id="numb"
x = Number(document.getElementById("val01").value);
y = Number(document.getElementById("val02").value);
// If x is Not a Number or less than one or greater than 10
if (isNaN(x) || x < 0 || x > 10) {
text1 = "Input not valid";
document.getElementById("validation1").innerHTML = text1;
} else if (isNaN(y) || y < 0 || y > 10) {
text2 = "Input not valid";
document.getElementById("validation2").innerHTML = text2;
} else {
z = x + y;
document.getElementById("total").innerHTML = z;
}
}
<p>Please input a number between 0 and 10:</p>
1st number:<input id="val01" required> <b id="validation1"></b> <br>
2nd Number:<input id="val02" required> <b id="validation2"></b> <br>
<button onclick="calc()">click</button><br /> sum = <span id="total">0</span>
您可以使用一个标志并检查它的计算。
跳过else
部分,使用标志代替。
var ok = true;
if (isNaN(x) || x < 0 || x > 10) {
ok = false;
text1 = "Input not valid";
document.getElementById("validation1").innerHTML = text1;
}
if (isNaN(y) || y < 0 || y > 10) {
ok = false;
text2 = "Input not valid";
document.getElementById("validation2").innerHTML = text2;
}
if (ok) {
z = x + y;
document.getElementById("total").innerHTML = z;
}
如果第一次验证失败(if (...)
),则不再执行第二次验证(else if (...)
)。
相反,分别运行两个验证,并且只有当两个验证都成功时才进行计算,例如:
function calc() {
var x, y, z, text1, text2;
// Get the value of the input field with id="numb"
x = Number(document.getElementById("val01").value);
y = Number(document.getElementById("val02").value);
var valid = true;
// If x is Not a Number or less than one or greater than 10
if (isNaN(x) || x < 0 || x > 10) {
text1 = "Input not valid";
document.getElementById("validation1").innerHTML = text1;
valid = false;
}
if (isNaN(y) || y < 0 || y > 10) {
text2 = "Input not valid";
document.getElementById("validation2").innerHTML = text2;
valid = false;
}
if(valid) {
z = x + y;
document.getElementById("total").innerHTML = z;
}
}
由于if else语句内部的逻辑构建方式,您只能获得一次验证。
你只进入三个语句中的一个,因为你使用if else if,当你需要进入多个语句时,你可以使用if()
的序列<script>
function calc() {
var x, y, z, text1, text2;
// Get the value of the input field with id="numb"
x = Number(document.getElementById("val01").value);
y = Number(document.getElementById("val02").value);
var invalidX = true;
var invalidY = true;
// If x is Not a Number or less than one or greater than 10
if (isNaN(x) || x < 0 || x > 10) {
invalidX = false;
text1 = "Input not valid";
document.getElementById("validation1").innerHTML = text1;
}
if (isNaN(y) || y < 0 || y > 10) {
invalidY = false;
text2 = "Input not valid";
document.getElementById("validation2").innerHTML = text2;
}
if (invalidX && invalidY) {
z = x + y;
document.getElementById("total").innerHTML = z;
}
}
</script>
希望这就是你要找的。注意,我还包含了两个布尔值变量,它们控制输入是否有效。
删除代码中用于第二次验证的else if条件
相关文章:
- CSS 类在验证时只工作一次
- Jquery验证,只发出一次警报
- 如何一次验证所有字段
- jQuery表单验证只适用于一次发布
- Javascript 字符串验证.如何在字符串中只写一次字符,并且只在开头写一次
- 在 yii 框架上收集多个输入以进行一次验证
- 验证用户是否仅投票一次
- cookie是jQuery为每个用户只打开一次弹出窗口的唯一方法吗?或者jQuery可以处理IP验证
- 输入验证只工作一次
- 如何一次用两个结果进行两个验证
- WebShim:一次显示表单验证的所有错误消息
- 验证后执行一次javascript代码
- 验证插件一次处理两个表单,错误
- Jquery自定义日期验证器只工作一次
- Dojo淡出只在验证期间的函数调用中工作一次
- 验证码刷新脚本只工作一次
- jQuery按钮一次验证表单的一部分
- 使用jquery验证器单击一个按钮即可在同一页面上一次验证多个表单
- Jquery验证多个选项卡,一次验证一个
- 如何暂停表单提交,最后一次验证,在最后和之后释放/触发/继续提交