【问题标题】:Angular And/Or Custom Validation角度和/或自定义验证
【发布时间】: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


    【解决方案1】:

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

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

    那我不知道你需要那个指令。

    【讨论】:

    • 你不能在有角度的模板中做===。此外,仅检查字段是否具有值 ng-required="author"ng-required="keyword" 会更简单。
    • 等等,是否可以只包含 Ng-require="author || keyword" 来获得我想要的此表单的行为?如何将这种类型的行为提取到指令中?
    • 我不知道不能在模板中做===,而只是做==。我一直在使用它,它工作正常
    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多