一旦到达数组的末尾,我怎么能执行一个函数?

时间:2012-10-30 13:30:28

标签: javascript arrays validation for-loop multidimensional-array

我有以下代码......

 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请求。

但是,一旦找到一个空元素,它会显示该星号并停止。

我需要的是每次循环遍历整个数组并显示所有星号。我有一种感觉,这将非常简单但无法找到任何东西或想出来。

任何帮助将不胜感激

3 个答案:

答案 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