javascript onsubmit在同一个调用中返回两个不同的值

javascript onsubmit在同一个调用中返回两个不同的值,javascript,html,validation,Javascript,Html,Validation,验证功能 function validateForm(){ var els; els = document.getElementById('name'); if(els.value == ''){ console.log(0); alert('Ai uitat sa completezi numele');

验证功能

     function validateForm(){
                var els;
                els = document.getElementById('name');
                if(els.value == ''){
                    console.log(0);
                    alert('Ai uitat sa completezi numele');
                    return false;
                }
                els = document.getElementsByClassName('education');
                [].forEach.call(els, function (el){
                    if(el.value == ''){
                        alert('Ai uitat unul sau mai multe campuri la educatie');
                        console.log(1);
                        return false;
                    }
                });
                console.log(2)
                return false;
            }
形式

<form onsubmit="return validateForm()" class="form-horizontal" action="{{ URL::to('/admin/people/') }}" method="POST" id="myForm">
我已经生成了动态html,所以除了服务器端验证之外,我还要进行javascript验证,这样当页面重新加载时,用户就不会丢失动态生成的html。 这里的问题是,如果我将第三个返回值更改为true,它将输出提交表单的1和2,这非常奇怪。。。 控制台中也没有显示错误

如果它进入第一个If,它在那里只输出0,所以我猜这是由循环引起的?

这:

            [].forEach.call(els, function (el){
                if(el.value == ''){
                    alert('Ai uitat unul sau mai multe campuri la educatie');
                    console.log(1);
                    return false;
                }
            });
导致从与主函数不同的作用域返回。拦截提交时,主函数中仅有两个可能的日志值为0或2

值1的记录发生在完全不同的范围和线程中。并且console.log不关心它来自哪个线程。它只是按照接收数据的顺序进行记录。

forEach中的返回false无效,处理将在整个数组中循环后继续

请改用普通循环:

for (let i = 0, len = els.length; i < len; i++) {
  let el = els[i];
  if(el.value == ''){
    alert('Ai uitat unul sau mai multe campuri la educatie');
    console.log(1);
    return false;
  }
}

我认为console.log1之后的返回值为false,只会中断forEach块/循环,然后到达console.log2,我怎么能在那里停止执行呢?我想出来了,非常感谢,非常感谢,我为此折磨了我的大脑近3个小时相信我,我去过那里。Javascript有时会令人困惑。