我一直在试图弄清楚为什么在if
语句中添加一行文字会导致表单在没有验证的情况下提交。
以下是引起问题的代码部分:
var firstName = document.getElementById("firstName");
// if first name is empty
if (firstName.value == "") {
var fnError = document.getElementById("fnError");
fnError.innerHTML = "*Please enter your first name";
fnResult = false;
} else {
// Store firstName using local storage
localStorage.setItem("firstName", firstName.value);
}
我正在尝试将以下代码行输入else
语句:
fnError.innerHTML = "";
使用onsubmit
事件处理程序验证表单:
var btnSubmit = document.getElementById("formUser");
btnSubmit.onsubmit = validate;
验证函数返回true
或false
,具体取决于是否满足验证条件。所有这一切目前都有效,直到我尝试添加该行代码,然后在用户下次按下提交按钮时发送表单,无论条件是否满足。
我是JavaScript新手,所以我可能会遗漏一些明显的东西。
非常感谢!
答案 0 :(得分:0)
这是一个可能的问题:如果您将违规行插入到代码中,如下所示,您的函数在返回值之前就会失败。在“else”块中,fnError将在范围内,但其值将是未定义的。尝试在未定义的值上设置属性会导致错误。
} else {
// Store firstName using local storage
fnError.innerHTML = "";
localStorage.setItem("firstName", firstName.value);
}
要解决此问题,请在“if”块之前移动以下行:
var fnError = document.getElementById("fnError");
现在fnError变量将包含对“if”和“else”块中的error-message元素的有效引用。