0

我有這個簡單的表單,需要一個文本框和一個保存按鈕。角度表單驗證不起作用

<form role="form" name="frmVariableConfig" novalidate ng-submit="frmVariableConfig.$valid && vm.saveChanges()">     
    <input type="text" ng-model="vm.CurrCustomer.Name" name="txtCustomerName" class="form-control input-sm validate[required]" placeholder="txtCustomerName" check-validation> 
    <button type="submit" class="btn btn-sm text-right">Save</button>     
</form> 

我使用這個指令激活jQuery驗證引擎

angular.module('app').directive('checkValidation', [ 
    function() { 
     return { 
      restrict: 'A', 
      require: '?ngModel', 
      link: function (scope, element, attrs, ngModel) { 
       element.closest('form').validationEngine(
        { 
         promptPosition: 'centerRight', 
         scroll: true, prettySelect: true, 
         autoPositionUpdate: true, 
         //validateNonVisibleFields: true, 
         //autoHidePrompt: true, 
         autoHideDelay: 1000, 
         fadeDuration: 0.9 
        } 
       ); 
      } 
     }; 
    }]); 

但它一直在呼籲的SaveChanges(),即使文本框爲空。如果文本框爲空,它不應該調用這個函數。

請幫忙。

+0

你有沒有考慮使用[角度驗證(https://docs.angularjs.org/guide/forms)? –

+0

放棄了,現在使用角度驗證:)我的下拉是一個引導選擇,它有一些隱藏的東西需要驗證。所以現在的行爲是好的,但我得到一個無效的表單控件與name = xxx是不可聚焦的。「保存錯誤。 –

+0

其實它不涉及這個問題,但其餘的東西工作。 –

回答

0

在一個項目中,我發現解決這種情況的唯一方法是將$ valid的值傳遞給save方法。

HTML

ng-submit="vm.saveChanges(frmVariableConfig.$valid)" 

JS

$scope.saveChanges = function(valid) { 
    if(valid) { 
    //do save 
    } 
}