【问题标题】:input type = number validation in angularjs输入类型=angularjs中的数字验证
【发布时间】:2014-01-07 14:04:57
【问题描述】:

我正在尝试使用输入 [数字] 验证 < input type = number > angularjs模块ng的指令。

当使用数字类型的输入时,最大(或最小)属性设置为数字,例如

<input type=number min="20" max="40">

它工作正常,但我的最小和最大数据是使用 ng-repeat 动态传入的数据,例如

<input type=number min="configRow.valueStart" max="configRow.valueEnd"> , 然后它不工作。

我知道 min 和 max 只接受数字,我不太擅长为此编写指令,请帮助我任何此类目录或任何建议将不胜感激。

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

minmax 需要一个值。所以,这应该工作:

<input type=number min="{{configRow.valueStart}}" max="{{configRow.valueEnd}}">

这是一个 plunker 演示演示。 (这只是对文档演示的修改)。

目前,这些属性的来源如下所示。因此,您可以看到一个预期值,然后使用parseFloat 将其转换为浮点数。因此需要将模型属性{{}} 插值到一个值。

src/ng/directive/input.js

if (attr.min) {
        var minValidator = function(value) {
          var min = parseFloat(attr.min);
          return validate(ctrl, 'min', ctrl.$isEmpty(value) || value >= min, value);
        };

        ctrl.$parsers.push(minValidator);
        ctrl.$formatters.push(minValidator);
      }

      if (attr.max) {
        var maxValidator = function(value) {
          var max = parseFloat(attr.max);
          return validate(ctrl, 'max', ctrl.$isEmpty(value) || value <= max, value);
        };

        ctrl.$parsers.push(maxValidator);
        ctrl.$formatters.push(maxValidator);
      }

【讨论】:

    【解决方案2】:

    最大长度不适用于&lt;input type="number" 我知道的最好方法是使用 oninput 事件来限制最大长度,它是一个适用于所有 Javascript 框架的通用解决方案。请看下面的代码。

    <input name="somename"
        oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
        type = "number"
        maxlength = "6"
     />T
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      相关资源
      最近更新 更多