[英]Form Field Validation- JavaScript- Empty field
我是JavaScript的新手,并且下面编写了代码,该代码应采用表单字段的输入(在姓氏的情况下),如果为空,则不允许我重定向到下一个页。 但是,它不起作用。有人知道为什么或如何解决它吗? 先感谢您!
window.addEventListener("DOMContentLoaded", init, false);
function init() {
var form = document.querySelector("form");
form.addEventListener("submit",
function(e) {
validate(e);
e.stopPropagation();
if (invalid == true) e.preventDefault();
},
false);
var invalid = false;
function validate(e) {
var lname = document.getElementById("lastName");
invalid = testField(lname);
return invalid;
}
function testField(field) {
if (field.value == undefined || field.value == " ")
invalid = true;
else
invalid = false;
return invalid;
}
}
}
这是错误的:
if (field.value == undefined || field.value == " ")
您正在将值与包含单个空格的字符串进行比较。 如果该字段为空,则不会与此匹配。
也无需与undefined
进行比较,该值始终是已定义的。
因此应该是:
if (field.value == "")
您可能要先修剪该字段,以防它们只是键入一堆空格:
if (field.value.trim() == "")
主要问题是与' '
空间进行比较。 这是不正确的,因为您要验证该值是否为空。
因此,您需要进行如下比较: field.value.trim() === ""
很好,我认为您的代码可以重新格式化,例如,您不需要比较布尔值,它们已经是布尔值,因此您可以在自己的条件下直接使用它们,即:
if (invalid == true) //See? the invalid variable is a boolean.
因此,请按以下方式使用它:
if (invalid)
另一个可能需要重新格式化的代码:
//Here you want to evaluate and assign a boolean, well you just have to assign the result of that condition.
function testField(field) {
if (field.value == undefined || field.value == " ")
invalid = true;
else
invalid = false;
return invalid;
}
请执行下列操作:
function testField(field) {
return invalid = field.value == undefined || field.value == " ";
}
最后,此代码不需要该全局变量invalid
,因此您可以删除invalid
变量:
function(e) {
validate(e);
e.stopPropagation();
if (invalid == true) e.preventDefault();
}
如下访问该功能:
function(e) {
e.stopPropagation();
if (validate(e)) e.preventDefault();
}
重新格式化后的代码:
window.addEventListener("DOMContentLoaded", init, false);
function init() {
var form = document.querySelector("form");
form.addEventListener("submit",
function(e) {
e.stopPropagation();
if (validate(e)) e.preventDefault();
},
false);
function validate(e) {
var lname = document.getElementById("lastName");
return testField(lname);
}
function testField(field) {
return field.value === undefined || field.value.trim() === ""
}
}
看到了吗,现在您的代码更干净了。
您的代码中有一些部分需要重新格式化,但这是一个好的开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.