【发布时间】:2020-10-14 22:27:16
【问题描述】:
我有一个表单,我正在使用 JavaScript 进行一些表单验证。
function validate() {
let arr = [];
arr[0] = form.name ;
arr[1] = form.mobNumber ;
arr[2] = form.email ;
arr[3] = form.query ;
for (let num = 0; num < arr.length; num++){
if (arr[num].value == ""){
arr[num].placeholder = "This field is mandatory";
arr[num].style.backgroundColor = "rgba(0, 0, 255, 0.1)";
arr[num].classList.add('redPlaceholder');
return false;
}
}
}
.redPlaceholder::placeholder {
color: red;
font-style: italic;
font-family: 'Roboto' sans-serif;
}
<form name="form" method="post" netlify id="form" onsubmit="return validate()" >
<input type="text" name="name" placeholder="Name"><br>
<input type="email" name="email" placeholder="E-mail"><br>
<input type="number" name="mobNunber" placeholder="Contact Number"><br>
<textarea name="query" placeholder="Your Query" rows="5"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
在 js 部分,我有一个空数组,然后通过名称访问它们来添加表单的输入字段。 在 for 循环中,我正在检查每个输入字段是否已填充。如果没有,那么我有一些代码要执行。那个代码块运行得很好。
问题是,当我在所有字段为空的情况下单击提交按钮时,for 循环中的代码只运行一次 - 对于第一个输入字段。尽管我已经检查了几次语法,但我认为循环存在一些问题。
【问题讨论】:
-
if块中有一个return语句,它使函数立即终止。 -
@JohnGordon 我正在使用 return 声明,以便不提交表单(据我所知)。
-
我明白这一点。您应该等到检查了 all 值之后才返回 false。实际上,您在 first 空白值上返回 false。
-
在
for循环之前添加var pass=true,并在if语句中将if 设置为false。并从循环中删除return。在循环之后,如果!pass然后return false;。
标签: javascript html forms