0

는 내가 배열에 필요한 요소를 저장하여 양식을 검증하고있어, 기본적으로 ...어떻게하면 배열의 끝에 도달하면 함수를 실행할 수 있습니까?

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 요청을 보냅니다.

그러나 지금은 빈 요소가 발견되면 별표가 표시되고 중지됩니다.

내가 필요한 것은 매번 전체 배열을 반복하고 모든 별표를 표시하는 것입니다. 나는 이것이 매우 간단하지만 아무것도 발견하지 못했거나 그것을 찾아 낼 수 없다는 느낌을 가지고있다.

어떤 도움을

답변

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(); 
    } 
+0

나는 간단하다고 생각했는데, 고맙습니다. – jampez77

+0

당신은 천만에요. 당신이 그것을 받아들이면 더 완벽 할 것입니다.) ... – Zafer

+0

분명히 4 분 안에 대답을 받아 들일 수 있습니다. – jampez77

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 
1

변경, noerror=false에 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; 
} 
관련 문제