验证函数
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,因此im在服务器端验证之外执行javascript验证,这样用户在页面重新加载时不会丢失动态生成的html。这里的问题是它同时输出1和2(如果我将第三次返回改为true),这是非常奇怪的.控制台中也没有显示错误。
如果它进入第一个if,它只输出0,所以我猜它是由循环引起的?
发布于 2017-08-30 18:55:27
这是:
[].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不关心它来自哪个线程。它只是按接收数据的顺序登录。
发布于 2017-08-30 19:00:23
return false在forEach中没有任何影响,处理将在遍历整个数组之后继续进行。
使用普通循环代替:
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;
}
}https://stackoverflow.com/questions/45967679
复制相似问题