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

Angularjs ng maxlength阻止将有效值数据绑定到输入字段,angularjs,validation,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.

我在表单中有以下字段:

<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模式时,它工作正常,并且这些值通过了验证。如果我删除了ng模式,只保留最大长度,它就会失败。输入的类型是文本还是数字也无关紧要。如果存在ng maxlength,则会失败。经过测试的Chrome、IE和Firefox浏览器也没有什么不同。我还验证了这是错误列表中的maxlength错误

我还在这个特殊表单上的几乎所有其他字段中使用ng maxlength,它们也工作得很好。如果我在表单加载后键入上面列出的精确值,当ng maxlength存在时,则在该点验证良好。但是,让客户机在每次加载表单时重新键入值,这不是一个合理的工作流

我不理解这一点,因为我在应用程序的其他表单中使用了相同的模式,它们工作得很好。我可以在这个特定的字段上使用ng模式,但我更愿意找出为什么在这个例子中,它不能在加载时正确验证


我使用的是AngularJS 1.2.14和jQuery1.9.1

我明白了。它实际上毕竟是输入类型。在进一步的测试之后,我意识到我最初对这种变化的测试是不正确的。将输入类型更改为数字修复了验证问题

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