ng-pattern能否保持条件?

时间:2014-02-25 14:30:48

标签: angularjs ng-pattern

以下行的正确方法是什么?

ng-pattern="(true)? apply-pattern : dont-apply-pattern"

我的问题是,我隐藏了ng-pattern字段,当它不需要时,但仍然不允许表单有效。

我尝试禁用该字段,但没有运气。

代码是:

<input type="text" ng-hide="param.paramType == 'java.lang.boolean'" 
       ng-pattern="param.paramValidatePattern" class="form-control input-sm" name="paramV" 
       ng-model="param.paramValue" ng-required="param.paramType != 'java.lang.boolean'" 
       ng-disabled="param.paramType == 'java.lang.boolean'" />

1 个答案:

答案 0 :(得分:0)

在您的版本中查看此特殊条件是否适合您...

<form name='myFormName'ng-submit="submitFormFunction()">
<input type="text" name="mySpecialPatternField" .../>

在JS代码(指令||控制器)

$scope.submitFormFunction = function(){
   if( specialConditionIsMet ){
       // then we don't want the pattern input to matter in form validation                                    
       $scope.myFormName.mySpecialPatternField.$setValidity('pattern', true); 
   }
}

可能需要是假的,我不记得了,但是它们与你认为应该是的角度交换。

如果您使用$ setValidity,并且您使用了多个验证 对于那个输入(除了模式,也称为requierd)你将需要遍历 $scope.myFormName.mySpecialPatternField.$error

获取密钥的对象,然后将其中的每一个设置为true;这将为每个错误将$valid设置为true,从而将表单设置为$valid = true

但是,您的版本可能会或可能不会提供此功能。检查......