ng-maxlength阻止有效值被数据绑定到输入字段

时间:2014-07-14 20:01:40

标签: angularjs validation

我在表单中有以下字段:

<input type="text" name="dedicatedstaff" ng-model="staffingRecord.dedicatedStaff"
      tabindex="9" ng-pattern="/^[0-9]{0,4}(\.[0-9]{1,2})?$/" ng-maxlength="7" />

表单是编辑现有记录。无论现有记录中的值是什么,该字段都无法通过验证,并且数据绑定变为未定义。记录中存在的一些示例值为1,2.5,12.5,99.25,4.0。我相信其中的每一个都应该通过模式和maxlength验证,但它不起作用。我已经检查了模型,并且在加载表单时存在值。

当我删除ng-maxlength指令并且只有ng-pattern时,它工作正常并且这些值通过验证。如果我删除ng-pattern并且只有max-length,则会失败。 INPUT的类型是文本还是数字也没关系。如果存在ng-maxlength,则失败。浏览器也没有什么区别(测试过Chrome,IE和Firefox)。我还验证了它是错误列表中的maxlength错误。

我也在这个特定形式上使用ng-maxlength几乎所有其他字段,它们也可以正常工作。如果我在表格加载后输入上面列出的确切值,当存在​​ng-maxlength时,在该点验证正常。但是,这不是一个合理的工作流程,使客户端每次加载表单时都会重复输入值。

我不理解它,因为我在应用程序中以其他形式使用相同的模式,它们工作正常。我可以在这个特定领域只使用ng-pattern,但我更想弄清楚为什么,在这种情况下,它不会在加载时正确验证。

我正在使用带有JQuery 1.9.1的AngularJS 1.2.14。

1 个答案:

答案 0 :(得分:0)

我明白了。毕竟它实际上是INPUT类型。经过进一步的测试,我意识到我对这种变化的初步测试是不正确的。将INPUT类型更改为NUMBER可修复验证问题。

<input type="number" name="dedicatedstaff" ng-model="staffingRecord.dedicatedStaff"
      tabindex="9" ng-pattern="/^[0-9]{0,4}(\.[0-9]{1,2})?$/" ng-maxlength="7" />