【问题标题】:why does angularjs blank out the input field when ng-maxlength is exceeded on initialization?为什么在初始化时超过 ng-maxlength 时 angularjs 会清空输入字段?
【发布时间】:2014-02-18 04:23:14
【问题描述】:

如果我有一个输入文本字段,其值在表单加载时超过了 ng-maxlength(输入仍然是 $pristine,而不是 $dirty),则输入字段会误导为空白,而 ng-model 仍然有数据。

http://plnkr.co/edit/uUaC9tgHEozBkUReRXBk?p=preview

我希望输入显示与模态相同的数据,为什么它显示为空白?

这是一个错误吗?还是预期的行为?

【问题讨论】:

  • 这似乎是 angularjs 的默认行为,因为已经发出了 ng-invalid 标签。
  • 如果我想向用户显示现有值以便他们修复长度怎么办?

标签: angularjs ng-maxlength


【解决方案1】:

这是因为超过 ng-maxlength 标准后,angular js 将输入视为未定义。 您可以将 html maxlength 属性与 ng-maxlength 一起使用。 Html maxlength 将仅将输入值限制为该限制,并且 ng-model 将仅存储有限长度的输入值。并且您可以使用 ng-maxlength 在超出限制时显示错误。

【讨论】:

  • 如果您从较短的内容开始并尝试超过最大长度,则可以使用。但是,如果您的表单预先填充了一个已经超过最大长度的字符串,并且您尝试缩短该字符串,则模型数据将变为空白,直到验证通过。我想知道是否有办法防止这种未定义的行为并保持该值与视图值相同?
  • 如果表单以已超过最大长度的填充字符串开头,那么您应该尝试在控制器本身中检查最大长度..
【解决方案2】:

ng-model-options="{ allowInvalid: true }" 添加到 html 元素为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多