【发布时间】:2019-04-29 20:19:01
【问题描述】:
我正在做一些 JavaScript 前端,我有大量的表单,所有这些都需要验证。截至目前,我正在使用这种结构:
function validateForm() {
let form = document.forms["form-add-consumer"];
let id = form["input-id"].value;
let lastName = form["input-last-name"].value;
let firstName = form["input-first-name"].value;
...
let missing = false;
if (lastName.trim() === "") {
document.getElementById("input-last-name-error").className = "error";
missing = true;
}
if (firstName.trim() === "") {
document.getElementById("input-first-name-error").className = "error";
missing = true;
}
if(missing){
return false
} else {
return buildRequest(id, firstName, lastName, ...);
}
}
如您所见,对于大型表单,该功能将快速增长。每个字段的代码有点多余:
- 声明表单域
- 根据布尔条件检查其值
- 如果布尔值失败,则显示错误标签并将失败的布尔值设置为 true 以不发送请求
我怎样才能改进这段代码而不使其过于复杂(如果可能,不要使用库)?
【问题讨论】:
-
使用 HTML 表单验证似乎可以为自己省去很多麻烦:developer.mozilla.org/en-US/docs/Learn/HTML/Forms/…
-
@MarkMeyer 谢谢!这似乎是一个不错的选择。我显然无法在自定义表单元素和旧版浏览器中完全使用它,但知道它仍然是一件很棒的事情!