我想对两个字段的总和进行验证,两个字段都是数字输入,但总数不得大于100.
所以我想我会创建一个hidden input
来从我的控制器中读取总数,然后创建一个自定义validationdirective
来检查该值是否为< = 100并创建一个检查是否为该输入有效与否,然后显示/隐藏它。
但输入绑定到我的控制器上的一个函数(将两个字段加在一起),所以我不能使用ng-model。
所以我认为我使用ng-bind,但是我的验证指令抱怨了这个:
require: 'ngModel',
,因为我没有ng模型了。
所以我删除了require
,但后来ctrl.$validators
不再存在,这给了我一个错误....
现在我迷路了: - )
我的验证指导是:
angular.module(Config.name).directive('maxvalue', function () {
return {
require: 'ngModel',
link: function (scope, elm, attrs, ctrl) {
ctrl.$validators.maxvalue = function (modelValue, viewValue) {
//validation here
};
}
};
});
你能解决这个问题吗?
修改
也许我的问题更广泛:我有更多这些像alidations,其中验证不依赖于单个输入字段。我还有两个按钮,用户可以单击(按钮类型,但随后用2个按钮实现)。我还希望在没有单击按钮时显示跨度+使表单无效。
但是我不知道如何对表格“你是无效的”说出来,也不是来自控制器的形式本身。
答案 0 :(得分:1)
对于设置表单或输入有效\无效,您可以使用$setValidity。
但我建议使用特殊库use-form-error。
您可以在jsfiddle
上看到使用示例
angular.module('ExampleApp', ['use', 'ngMessages'])
.controller('ExampleController', function($scope) {
});

.errors {
color: maroon
}

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular-messages.min.js"></script>
<script src="https://cdn.rawgit.com/Stepan-Kasyanenko/use-form-error/master/src/use-form-error.js"></script>
<div ng-app="ExampleApp">
<div ng-controller="ExampleController">
<form name="myForm">
<label>Enter your digit 1:</label>
<input type="text" ng-model="digit1" name="myDigit1" />
<br>
<label>Enter your digit 2:</label>
<input type="text" ng-model="digit2" name="myDigit3" />
<div use-form-error="isGeaterHundred" use-error-expression="digit1*1+digit2*1>100" ng-messages="myForm.$error" class="errors">
<div ng-message="isGeaterHundred">Your sum is greated then 100</div>
</div>
<input type="submit" ng-disabled="myForm.$invalid">
</form>
</div>
</div>
&#13;