javascript - 当未设置显式值且字段包含任何字符时,Angular ng-maxlength 将字段标记为无效

标签 javascript angularjs

我正在使用 Angular (1.3b17) 动态创建表单。我将我的表单模式存储在一个对象中,并包括几个定义我的字段在该模式中的行为的属性,例如一个字段将具有“类型”(文本、文本区域、检查等)和“最大长度”属性。然后,我将元素的 Angular 属性设置为对象的相应属性(例如 ng-maxlength="field.maxlength")。

我注意到有些奇怪,我想看看它是否按预期工作。当设置了属性但未指定值时 (ng-maxlength="") 然后 $error 在键入任何内容后立即设置为 true,因为它期望最大长度为 0。类似地,使用表达式 (ng-maxlength=如果未设置属性,“field.maxlength”) 的行为方式相同。

我创建了一个简单的 Plunker所以你可以明白我指的是什么。如果未设置该值,我个人希望不会进行 maxlength 检查,即使该属性存在也是如此。

<input id="txtName" ng-model="myval" type="text" name="name" ng-maxlength="" /><br />
{{myForm.name.$error}}

或者

<input id="txtName" ng-model="myval" type="text" name="name" ng-maxlength="someundefinedvalue" /><br />
{{myForm.name.$error}}

当然,我可以通过将 ng-maxlength 设置为较大的值来解决这个问题,但这似乎并不理想。这种行为有原因吗?或者它可能是一个错误?

最佳答案

貌似只要在表单控件上定义指令就可以了the validator is applied不幸的是。所以,你的问题的答案是,它一直都是这样,它可能被认为是一个错误,但在这一点上它会是一个破坏性的变化,而且不太可能被改变。

关于javascript - 当未设置显式值且字段包含任何字符时,Angular ng-maxlength 将字段标记为无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003379/

相关文章:

javascript - 使用 JavaScript 禁用 onClick 功能

当鼠标在元素上时,Javascript 在间隔中执行函数

javascript - 使用 NgTable 参数通过 AJAX 加载 JSON

javascript - Angular js ng-repeat 用于嵌套的 json 值

javascript - jQuery 或 AngularJS Ajax "POST"使用下面的代码向服务器请求,但不向服务器发送参数数据。

javascript - Nodejs Sequelize 的 FindOne() 模型包含四舍五入或 chop 的值

javascript - 当状态为 "paid"时禁用支付按钮

javascript - 如何使变量成为可调用函数?

angularjs - 在angularjs中同步音频和动画

html - Ionic - 如何将 ionic 列表变成网格