【问题标题】:Get length of input type="number" angularJS获取输入类型 =“数字” angularJS 的长度
【发布时间】:2016-12-22 23:08:08
【问题描述】:

所以我看到了很多答案,但没有一个适合我的情况。我不能使用 jQuery 仅供参考。

<ng-repeat="stuff in junk">
  <md-input-container>
    <input type="number" ng-model="stuff.value.currentValue" ng-keypress="myController.checkLength(stuff.length)"

这显然是我在做什么的一个非常粗略的模型。最终,我只是想进行一个数字输入,我可以在其中限制长度,而不仅仅是在提交时告诉他们太多字符的错误。因为模型是可变的,所以我不能 getelementbyID,不能使用 maxlength 作为它的 type="number" 等等。我完全被难住了。我真的很想不使用标准输入,然后对用户输入进行验证,但我没有想法

【问题讨论】:

  • 我不明白 - 为什么你不能使用 max? stackoverflow.com/questions/8354975/…
  • max 属性的 input 元素将起作用。
  • “我只是想进行一个数字输入,我可以在其中限制长度,而不仅仅是告诉他们太多字符的错误” @ 的预期值范围是多少987654325@ 元素value ?多少个字符会“太多”?
  • 没有最大值将不起作用。当您超过限制时,Max 会提醒您,它不会停止进一步的输入。限制无关紧要,但可能是 4 个字符,范围为​​ 0-9999。

标签: javascript html angularjs angular-material


【解决方案1】:

您应该使用attribute max,在这种情况下应该可以使用。

<input type="number" max="9000" ng-model="stuff.value.currentValue" ng-keypress="myController.checkLength(stuff.length)" />

【讨论】:

  • Min 和 Max 只给出一个错误,就像我说的那样,我试图严格限制允许的字符数,而不仅仅是提醒用户。
【解决方案2】:

如果我正确理解了这个问题,您正在尝试将每个输入的长度设置为 ng-repeat 中每个 stuff.value.currentValue(可能是可变的)的长度。如果这是正确的,您可以尝试以下方法:

<input type="number" 
 maxlength="{{::stuff.value.currentValue.length}}"  
 ng-model="stuff.value.currentValue" 
 ng-keypress="myController.checkLength(stuff.length)" />

绑定中变量名前的::表示一次性绑定,表示在第一个摘要循环后设置该值,后续摘要后不变。这意味着当您的 ng-repeat 循环遍历数据时(比如单词“Peter”、“Paul”和“Mary”),每个输入的最大长度将是原始输入的长度(在本例中为 5, 4 和 4),并且在模型更新时不会改变。 maxlength 属性不会提供错误消息,但不允许用户输入比每个 stuff.value.currentValue 的原始长度更长的文本

【讨论】:

    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多