【问题标题】:Angular ng-maxlength marks field invalid when no explicit value is set and field contains any characters当未设置显式值且字段包含任何字符时,Angular ng-maxlength 将字段标记为无效
【发布时间】:2014-11-05 11:34:37
【问题描述】:

我正在使用 Angular (1.3b17) 动态创建表单。我将表单的架构存储在一个对象中,并包括几个属性,这些属性定义了我的字段在该架构中的行为,例如,一个字段将具有“类型”(文本、文本区域、检查等)和“最大长度”属性。然后,我将元素的角度属性设置为对象的相应属性(例如 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 设置为较大的值来解决此问题,但这似乎并不理想。这种行为有原因吗?或者它可能是一个错误?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    不幸的是,看起来只要您在表单控件the validator is applied 上定义指令即可。所以,你的问题的答案是,它一直都是这样,它可能被认为是一个错误,但在这一点上,这将是一个重大变化,而且不太可能被改变。

    【讨论】:

    • 无赖。很公平,我猜。
    猜你喜欢
    • 1970-01-01
    • 2019-02-19
    • 2011-10-25
    • 2018-08-05
    • 1970-01-01
    • 2020-03-10
    • 2017-09-19
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多