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 リクエストを送信します。

ただし、現時点では、空の要素が見つかると、そのアスタリスクが表示されて停止します。

私が必要とするのは、毎回配列全体をループしてすべてのアスタリスクを表示することです。これは非常に簡単だと思いますが、何も見つけられなかったり、理解できなかったりします。

どんな助けでもいただければ幸いです

4

3 に答える 3

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();
  }
于 2012-10-30T13:33:24.643 に答える
1

ここ

return false を に変更し、ループの前にnoerror=false追加して、関数を終了しますvar noerror=truereturn 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;
}
于 2012-10-30T13:33:37.827 に答える
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
于 2012-10-30T13:32:52.970 に答える