输入类型= angularjs中的数字验证

Paw*_*wan 6 javascript angularjs

我试图< input type = number >通过使用angularjs模块ng的输入[number]指令进行验证.

使用类型编号的输入时,将max(或min)属性设置为数字,例如

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

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

<input type=number min="configRow.valueStart" max="configRow.valueEnd"> ,那它不起作用.

我知道min和max只接受数字而且我写的指令不太好,请帮助我任何这样的目录或任何建议将不胜感激.

Dav*_*yon 5

minmax期待一个价值.所以,这应该工作:

<input type=number min="{{configRow.valueStart}}" max="{{configRow.valueEnd}}">
Run Code Online (Sandbox Code Playgroud)

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

目前,这些属性的来源如下所示.所以,你可以看到一个值,然后被转换为浮点数parseFloat.因此,需要将model属性插值{{}}为值.

SRC/NG /指令/ 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);
      }
Run Code Online (Sandbox Code Playgroud)