【问题标题】:How do I set the value of an element within a directive?如何在指令中设置元素的值?
【发布时间】:2016-06-22 21:22:37
【问题描述】:

每当元素的 maxLength 被击中时,我正在使用一个指令在元素之间自动制表。但首先,我试图弄清楚如何确保元素的值不能大于元素的最大长度。

这是我迄今为止尝试过的:

  if (el.value.length >= el.maxLength) {
    el.value = el.value.substr(0, el.maxLength);
  }

如果我设置断点并单步执行,则在执行此操作后,el.value 设置正确,但在视图中仍允许用户键入。

【问题讨论】:

  • maxLength属性不会限制值的长度,为什么需要这个条件el.value.length >= el.maxLength
  • <input type="text" name="usrname" maxlength="10">

标签: angular angular2-directives


【解决方案1】:

目前不支持动态修改验证器属性。它们必须静态添加(无[] 绑定),并且仅在构建控件实例时读取一次。

您可以使用FormBuilder 和一个验证器来执行此操作,该验证器引用了可能影响验证的其他值,如How to change validation of a control after it has been initiated? 中所示

【讨论】:

  • 我并不认为这是一个验证器,我只是想强制一个值
  • 另见stackoverflow.com/questions/37800841/… 你的问题不够清楚,我无法提出更好的建议
  • 我不确定如何澄清它。每当用户输入输入时,我都会检查输入值的长度是否大于输入的最大长度。如果是,我想截断输入的值以匹配最大长度。因此,如果我有一个最大长度为 5 的字段,则用户不能输入超过 5 个字符。在 jQuery 中,我会做 $("#element").val($("#element").val().substr(0,maxlength))
  • 听起来链接问题中的方法应该适合。
  • 嗯,是的,我想可能是这样。我现在就去看看。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
相关资源
最近更新 更多