【发布时间】:2014-12-01 05:23:08
【问题描述】:
我有一个表单,它要求两个字段中的至少一个字段具有值才能有效。现在我已经建立了一个指令'keywordAndOrAuthor'来处理这个验证。我已经设法让它正确检查任一字段是否有值,如果有,则将验证设置为 true。我不知道该怎么做是将另一个字段的验证也设置为 true。这是指令的当前代码:
angular.module('dashboard').directive 'keywordAndOrAuthor', ->
require: "ngModel"
link: (scope, elem, attrs, ctrl) ->
ctrl.$setValidity 'keywordAndOrAuthor', false
ctrl.$parsers.unshift (viewValue) ->
siblingElem = elem.siblings('.keyword, .author')[0]
if viewValue || siblingElem.value
ctrl.$setValidity 'keywordAndOrAuthor', true
viewValue
如何将兄弟元素的有效性设置为 true?
** 编辑 **
这是我想要的有效解决方案。
$scope.keywordOrAuthor = (topic_source) ->
if (topic_source.authors || topic_source.keywords) then false else true
要实现的关键点是 ng-required 的工作方式类似于 Angular ng-class 或 ng-disable,因为它仅在被评估的条件返回 true 时将 required 属性添加到元素。换句话说,在上面的例子中,如果作者参数或关键字参数有一个值,那么函数(在 ng-require 指令中使用)将返回 false,然后不会返回验证错误。
【问题讨论】:
标签: angularjs validation