0

我一直在努力弄清楚为什么在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;

并且 validate 函数根据是否满足验证条件返回true或返回。false所有这些目前都运行良好,直到我尝试添加该行代码,然后在用户下次按下提交按钮时发送表单,无论是否满足条件。

我是 JavaScript 新手,所以我可能遗漏了一些明显的东西。

非常感谢!

4

1 回答 1

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”块中错误消息元素的有效引用。

于 2013-10-13T01:42:13.587 回答