形式 – 在AngularJS中验证隐形和残疾字段

有没有办法在AngularJS中进行条件验证?我想要解决的问题基本上是一个单选按钮列表,可以根据选择启用/禁用输入.以下图像描绘了问题.第一个文本输入只接受字母,第二个只接受数字.两者都具有ng-pattern和ng-required设置. (The working example on Plunker)

我想要实现的是,当选择单选按钮时,验证将关闭相应的输入字段.

我曾希望将ng-disabled设置为true可以防止无效状态被设置为有问题的表单控件,但唉,情况并非如此.

目前我发现的唯一解决方案是在选择其他选项并将ng-required设置为false时清除输入.是否有任何明智的方式来实现这一点,或者是将DOM中的元素完全从DOM中解脱出来的唯一方法

尝试此指令:
.directive('disableChildren',function() {
  return {
    require: '^form',restrict: 'A',link: function(scope,element,attrs,form) {
      var control;

      scope.$watch(function() {
        return scope.$eval(attrs.disableChildren);
      },function(value) {
        if (!control) {
          control = form[element.find("input").attr("name")];
        }
        if (value === false) {
          form.$addControl(control);
          angular.forEach(control.$error,function(validity,validationToken) {
            form.$setValidity(validationToken,!validity,control);
          });
        } else {
          form.$removeControl(control);
        }
      });
    }
  }
})

DEMO

有关其工作原理的更多信息和说明.查看我的类似的指令,以排除隐藏的元素进行验证:

implementing a directive to exclude a hidden input element from validation ($addControl issue)

我想我们可以以某种方式组合这些指令来创建一个可以随处使用的一般指令,这取决于我们如何评估表达式.

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...