2017-05-13 14 views
2

ユーザ入力の詳細をDBに送信する前に、妥当性検査のチェックが必要です。私はフォームのタブと1つの共通の独立したセーブボタンを持っています。javaScript:偽を返した後でも行が実行されています

$scope.saveFn = function() { 
    $("#active_form_id") 
     .find("input,textarea,select") 
     .each(function (e) { 
      var value = $(this).val(); 
      var id = $(this).prop("id"); 

      if (value == null || value == "") { 
       return false; 
       //Abort things here 
      } 
     }); 

    alert("After validation check"); 
} 

これは、ユーザーが保存ボタンを押したときに呼び出され、それをサーバーにデータを保存し1つのエンドポイントの呼び出しを怒鳴るました。 私の問題はreturn falseステートメントが実行されているにもかかわらず、です。エンドポイントが呼び出され、以下の警告が実行されます。

アラートステートメントの実行を停止するにはどうすればよいですか?

+0

ifステートメントは本当ですか? –

+0

投稿したコードは、falseを返した後は何も表示されません。コードは、クロージャ内のreturn文の後に実行されることはありません。 – Utkanos

+3

'alert()'は 'each()'関数の外にあるので、常に実行されます.. 'return false;'は '$ scope.saveFn = function(){また、警告が最初に実行され、その後、 'each()'が動作を開始します。 –

答えて

1

このコードを試すことができます。 1つのグローバル変数を設定していて、偽の場合はその変数をfalseに設定してください。

var IsValid=true; 
$scope.saveFn = function() { 
    $("#active_form_id") 
    .find("input,textarea,select") 
    .each(function (e) { 
     var value = $(this).val(); 
     var id = $(this).prop("id"); 

     if (value == null || value == "") { 
      IsValid=false; 
      return false; 
      //Abort things here 
     } 
    }); 
    if(IsValid){ 
     alert("After validation check"); 
    } 
} 
+1

これは私がこの時点で探しているものです –

関連する問題