JavaScript每次oninput验证1个
JavaScript oninput validation 1 at a time
我有两个输入字段,长度和宽度。我使用实时验证和计算没有提交按钮。我被困在一个问题上,当我输入长度"len"时,它也会立即验证宽度。或者如果我先输入width,它也会验证len。我希望它们只在输入特定字段时进行验证。
对于len和width输入文本字段,我在HTML中设置了oninput="Validate()"。因此,在用户尝试输入宽度之前,len的oninput会自动检查宽度的验证。
无论如何,在1个验证失败后中断或停止,因此它们并不总是被验证?或者我需要为oninput使用两个单独的函数吗?
当两个验证通过后,我需要将变量传递给Calculate(len, width);用于最后的计算和显示。
function Validate()
{
// user input
var len = parseFloat(document.getElementById("len").value);
var width = parseFloat(document.getElementById("width").value);
var lenValid;
var widthValid;
// validate
if (isNaN(len) || len <= 0 || len > 1000)
{
document.getElementById("len_error").innerHTML = "<br>" + "Must be between 0 and 1000";
document.getElementById("len").focus();
lenValid = false;
}
else
{
document.getElementById("len_error").innerHTML = "";
lenValid = true;
}
if (isNaN(width) || width <= 0 || width > 1000)
{
document.getElementById("width_error").innerHTML = "<br>" + "Must be between 0 and 1000";
document.getElementById("width").focus();
widthValid = false;
}
else
{
document.getElementById("width_error").innerHTML = "";
widthValid = true;
}
// process calculations
if (lenValid && widthValid)
Calculate(len, width);
}
您可以通过以下方式优化代码。
function Validate(lw)
{
// user input
var len = parseFloat(document.getElementById("len").value);
var width = parseFloat(document.getElementById("width").value);
// validate
if (len <= 0 || len > 1000 || isNaN(len))
document.getElementById("len_error").innerHTML = "<br>" + "Must be between 0 and 1000";
else
document.getElementById("len_error").innerHTML = "";
if (width <= 0 || width > 1000 || isNaN(width))
document.getElementById("width_error").innerHTML = "<br>" + "Must be between 0 and 1000";
else
document.getElementById("width_error").innerHTML = "";
if (document.getElementById("len_error").innerHTML || document.getElementById("width_error").innerHTML)
{
document.getElementById("area").value = "";
document.getElementById("perimeter").value = "";
document.getElementById("diagonal").value = "";
document.getElementById(lw).focus();
}
else
Calculate(len, width);
}
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 如何在datetimepicker中使用两个验证器
- angularjs复选框验证至少两个
- 如何验证日期、月份和日期的3个独立输入字段;年使用jquery或javascript
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 如何使用CORS向多个域验证同一用户
- 我这里有两个表格,在提交验证第一个表格后,我如何转到第二个表格进行验证
- jquery.validator和一个页面上的两个联系人表单将在提交时验证空表单
- 同一页面上的多个验证码在提交失败时消失
- 节点.js:如何使用验证器.js处理多个验证
- html 表单上的多个验证规则
- jqBootstrapValidation中的多个验证失败
- Java 脚本单击多个验证
- 如何一次用两个结果进行两个验证
- 如何在Angular中基于一个http调用进行多个验证
- 在按钮单击时显示多个验证警报
- 表单中有多个验证的单选按钮的Javascript验证