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 
    } 
}