首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript onsubmit在同一个调用中返回两个不同的值

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

Stack Overflow用户
提问于 2017-08-30 18:43:11
回答 2查看 31关注 0票数 0

验证函数

代码语言:javascript
复制
     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;
            }

表单

代码语言:javascript
复制
<form onsubmit="return validateForm()" class="form-horizontal" action="{{ URL::to('/admin/people/') }}" method="POST" id="myForm">

我生成了动态html,因此im在服务器端验证之外执行javascript验证,这样用户在页面重新加载时不会丢失动态生成的html。这里的问题是它同时输出1和2(如果我将第三次返回改为true),这是非常奇怪的.控制台中也没有显示错误。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-30 18:55:27

这是:

代码语言:javascript
复制
            [].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不关心它来自哪个线程。它只是按接收数据的顺序登录。

票数 1
EN

Stack Overflow用户

发布于 2017-08-30 19:00:23

return false在forEach中没有任何影响,处理将在遍历整个数组之后继续进行。

Objects/Array/forEach

使用普通循环代替:

代码语言:javascript
复制
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;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45967679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档