2017-05-13 86 views
2

我希望在將用戶輸入詳細信息提交給數據庫之前進行驗證檢查。我有表格的標籤和一個共同的單獨的保存按鈕,點擊調用save函數描述如下;javaScript:即使在返回false之後,行仍在執行

$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"); 
} 

這被稱爲當用戶點擊保存按鈕,並咆哮它一個端點調用,將數據保存到服務器。 我的問題是,即使return false語句正在執行,那麼我的端點也被調用並且下面的寫入警報被執行。

我該如何停止執行警報聲明?

alert("After validation check"); 
+0

你確定if語句是真的嗎? –

+0

您發佈的代碼在返回false後沒有顯示任何內容。代碼將不會在閉包中的返回語句之後執行。 – Utkanos

+3

'alert()'在''()'函數之外,所以它會一直執行..''return false;'將帶你從'each()'循環而不是'$ scope.saveFn = function(){ ''也'alert'先執行,然後'each()'將開始工作 –

回答

1

您可以試試這段代碼。在這我已經設置了一個全局變量,如果驗證假設置該變量爲假

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

這就是我在這一刻尋找的東西 –

相關問題