角度和/或自定义验证

时间:2014-10-06 21:07:52

标签: angularjs validation

我有一个表单,要求两个字段中的至少一个字段具有值才能生效。现在我已经建立了一个指令&keyword; &OrAutAuthor'处理此验证。我设法让它正确检查其中一个字段是否有值,如果是,则将验证设置为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

如何将siblingElem的有效性设置为true?

** 编辑 **

这是我想要的工作解决方案。

$scope.keywordOrAuthor = (topic_source) ->
  if (topic_source.authors || topic_source.keywords) then false else true

要实现的关键点是ng-required与Angular ng-class或ng-disable类似,因为如果被评估的条件返回true,它只会向元素添加必需的属性。换句话说,在上面的示例中,如果authors参数或keywords参数有值,则函数(在ng-require指令中使用)将返回false,然后不会返回验证错误。 / p>

1 个答案:

答案 0 :(得分:1)

尝试将ng-required设置为“如果其他字段为空”

      <input type="text" ng-model="keyword" ng-required="author === undefined">
      <input type="text" ng-model="author" ng-required="keyword === undefined">

然后我不知道你需要任何该指令。