角形验证不起作用

时间:2015-06-17 17:39:37

标签: javascript jquery angularjs angularjs-directive jquery-validation-engine

我有这个简单的表格,需要一个文本框和一个保存按钮。

<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()。如果文本框为空,则不应调用此函数。

请帮忙。

1 个答案:

答案 0 :(得分:0)

在一个项目中,我发现解决这种情况的唯一方法是将$ valid的值传递给save方法。

HTML

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

JS

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