Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导致表单未经验证而提交的语句_Javascript - Fatal编程技术网

Javascript 导致表单未经验证而提交的语句

Javascript 导致表单未经验证而提交的语句,javascript,Javascript,我一直在绞尽脑汁想弄明白为什么在if语句中添加一行文本会导致表单在未经验证的情况下提交 以下是导致问题的代码部分: var firstName = document.getElementById("firstName"); // if first name is empty if (firstName.value == "") { var fnError = document.getElementById("fnError"); fnError.innerHTML = "*Ple

我一直在绞尽脑汁想弄明白为什么在
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
,具体取决于是否满足验证条件。在我尝试添加这行代码之前,所有这些都可以正常工作,然后在用户下次按下submit按钮时发送表单,无论是否满足条件

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


非常感谢

这里有一个可能的问题:如果在代码中插入有问题的行,如下图所示,那么函数在返回值之前就失败了。在“else”块中,fnError将在范围内,但其值未定义。试图对未定义的值设置属性会导致错误

} else { 
    // Store firstName using local storage
    fnError.innerHTML = "";
    localStorage.setItem("firstName", firstName.value);
}
要解决此问题,请在“if”块之前移动以下行:


现在,fnError变量将在“if”和“else”块中包含对错误消息元素的有效引用。

缺少重要代码。您是否可以完成它,或者创建一个JSFIDLE,在其中显示问题?我会在每个必填表单字段中写入
required
,如
所示。“formUser”是您表单的id吗?您的浏览器控制台中是否有异常?请说明如何声明
fnsult
变量。可能它会被绑定到
窗口
上下文?我不能发布所有代码,因为它是用于评估的,然后会出现剽窃问题-这非常令人沮丧。我正试图编辑第二条语句:fnError.innerHTML=“”;。正在清除错误消息。formUser是表单的ID,fnResult在函数顶部声明如下:var fnResult=true@对于那些浏览器不支持
required
属性的人来说,有一个JavaScript回退还是不错的。
var fnError = document.getElementById("fnError");