声明导致表单无需验证即可提交

时间:2013-10-13 00:35:26

标签: javascript

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

验证函数返回truefalse,具体取决于是否满足验证条件。所有这一切目前都有效,直到我尝试添加该行代码,然后在用户下次按下提交按钮时发送表单,无论条件是否满足。

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

非常感谢!

1 个答案:

答案 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元素的有效引用。