我有以下代码......
var min_val = [{"id":"driverDOA","value":date_of_accident},etc etc...];//put validation elements in an array
for (var i=0;i<min_val.length;i++)//loop through each element if array
{
var object = min_val[i];
if(object.value == "" || object.value == null)//if element is null or empty then execute code
{
document.getElementById(object.id).parentNode.innerHTML += '<div class="prompt accident">*</div>';
document.getElementById('accident-tab').innerHTML += '<div class="prompt accident">*</div>';
return false;
}
else
{
$('.prompt accident').remove();
sendAjaxRequest();
}
}
基本上,我通过存储数组中所需的元素来验证表单。然后我遍历数组并检查是否有空值。如果用户已经留下了一个值,那么该元素旁边和该部分的选项卡旁会显示一个星号。
一旦用户填写了所有标记的表单元素,代码就会删除星号并发送Ajax请求。
但是,一旦找到一个空元素,它会显示该星号并停止。
我需要的是每次循环遍历整个数组并显示所有星号。我有一种感觉,这将非常简单但无法找到任何东西或想出来。
任何帮助将不胜感激
答案 0 :(得分:2)
var hasError=false;
for (var i=0;i<min_val.length;i++)//loop through each element if array
{
var object = min_val[i];
if(object.value == "" || object.value == null)//if element is null or empty then execute code
{
document.getElementById(object.id).parentNode.innerHTML += '<div class="prompt accident">*</div>';
document.getElementById('accident-tab').innerHTML += '<div class="prompt accident">*</div>';
hasError= true;
//return false; // remove this...
} else $('.prompt accident').remove();
}
if(!hasError) {
sendAjaxRequest();
}
答案 1 :(得分:1)
下面
将返回false更改为noerror=false
,在循环前添加var noerror=true
并使用return noerror
结束函数
喜欢这个
var noerror=false, min_val = [{"id":"driverDOA","value":date_of_accident},etc etc...];//put validation elements in an array
$('.prompt accident').remove(); // reset
for (var i=0;i<min_val.length;i++) { //loop through each element if array
var object = min_val[i];
if(object.value == "" || object.value == null) { //if element is null or empty then execute code
document.getElementById(object.id).parentNode.innerHTML += '<div class="prompt accident">*</div>';
document.getElementById('accident-tab').innerHTML += '<div class="prompt accident">*</div>';
noerror=false;
}
}
if (noerror) {
sendAjaxRequest();
}
return noerror;
}
答案 2 :(得分:0)
不要return false
。只需continue
。
编辑:更好的解决方案是:
var min_val = [{"id":"driverDOA","value":date_of_accident},etc etc...];//put validation elements in an array
var valid = true; // I MADE A CHANGE HERE
for (var i=0;i<min_val.length;i++)//loop through each element if array
{
var object = min_val[i];
if(object.value == "" || object.value == null)//if element is null or empty then execute code
{
document.getElementById(object.id).parentNode.innerHTML += '<div class="prompt accident">*</div>';
document.getElementById('accident-tab').innerHTML += '<div class="prompt accident">*</div>';
valid = false; // AND HERE
}
else
{
$('.prompt accident').remove();
sendAjaxRequest();
}
}
return valid; // AND HERE