0

使用带有 ng-pattern 的表单输入指令。当指令上的 ID 是字符串时它可以工作(即显示错误),但当 ID 是表达式时它会失败(即永远不会显示错误)。伪代码:

作品

<form name="myForm" role="form" ng-submit="customer.submit()">
  <form-input id="foo" ng-pattern="/^[0-9]+$/"></form-input>
</form>
<span ng-show="myForm.foo.$error.pattern" class="ng-hide">Not valid number!</span>

不起作用(myVar = "foo")

<form name="myForm" role="form" ng-submit="customer.submit()">
  <form-input id="{{myVar}}" ng-pattern="/^[0-9]+$/"></form-input>
</form>
<span ng-show="myForm.foo.$error.pattern" class="ng-hide">Not valid number!</span>

Chrome Inspected HTML(工作/不工作完全相同)

<input type="text" id="foo" name="foo" ng-pattern="/^[0-9]+$/" class="ng-valid ng-valid-pattern">
<span ng-show="myForm.foo.$error.pattern" class="ng-hide">Not valid number!</span>

假设这是因为当一切都连接好时,表达式 ID 是未定义的,但不知道如何修复。提前致谢!

4

1 回答 1

0

您需要一个用于验证的模型,ng-model准确的指令。添加ng-model后,一切正常。

<form name="myForm" role="form" >
    <input name="foo" id="{{myVar}}" ng-pattern="/^[0-9]+$/" ng-model="modelVar" />
</form>

jsFiddle

于 2015-01-16T08:29:22.860 回答