Javascript For循环在验证表单时仅运行一次

Javascript For循环在验证表单时仅运行一次,javascript,html,forms,Javascript,Html,Forms,我有一个表单,我正在使用JavaScript进行表单验证 函数验证(){ 设arr=[]; arr[0]=form.name; arr[1]=form.mobNumber; arr[2]=form.email; arr[3]=form.query; for(设num=0;num

我有一个表单,我正在使用JavaScript进行表单验证

函数验证(){
设arr=[];
arr[0]=form.name;
arr[1]=form.mobNumber;
arr[2]=form.email;
arr[3]=form.query;
for(设num=0;num
.redPlaceholder::placeholder{
颜色:红色;
字体:斜体;
字体系列:“Roboto”无衬线;
}






在html中,您给mobilenumber输入了
mobNumber
的名称,但是javascript查找
mobNumber
,所以我修复了这个问题。在其中一个未完成的输入期间,简单地检查
arr.length==num
是否返回false不起作用,因此我创建了一个变量,如果其中一个输入未填充,则勾选该变量以在for循环结束后返回false。我还添加了
arr[num].style.backgroundColor=“transparent”
因此,如果用户未能填写输入,即使在填写输入后,背景也不会始终保持紫色

函数验证(){
让错误=错误;
设arr=[];
arr[0]=form.name;
arr[1]=form.mobNumber;
arr[2]=form.email;
arr[3]=form.query;
for(设num=0;num
.redPlaceholder::placeholder{
颜色:红色;
字体:斜体;
字体系列:“Roboto”无衬线;
}






我会使用
prevent default
来阻止表单提交,允许您运行所需内容,然后在实际准备就绪时通知表单提交

摘自此

并更新您的表格提交至:

<form name="form" method="post" netlify id="form" onsubmit="return validate(event)" >


if
块中有一个
return
语句,它使函数立即终止。@JohnGordon我使用return语句是为了不提交表单(据我所知)。我理解这一点。您应该等到检查完所有值后才返回false。实际上,第一个空值返回false。在for
循环的
之前添加
var pass=true
,并在
if
语句中将if设置为
false
。并将
返回
从循环中移除。在循环之后,如果
!通过
然后
返回false
。另外,如果您在这里对后端有任何控制,最好确保这些输入是实际填写的,因为有人可以检查元素并删除javascript。我认为另一个答案是,如果其中一个值等于“”,则在for循环中使用
e.preventDefault()
。我会更新我的答案来做到这一点。@Sir:我确信,最终位置并不重要。但我觉得大多数人会把它作为一种惯例放在函数的一开始。发现这一点:在这种情况下是这样的,因为这里的人希望表单正常提交,如果输入填写正确,并且如果您要将
preventDefault()
放在开头,您必须立即使用另一个函数重新提交,而您可以使用
preventDefault()
仅当出现问题时。“最简单的解决方案就是不调用e.preventDefault(),除非验证实际失败。”-
<form name="form" method="post" netlify id="form" onsubmit="return validate(event)" >