繁体   English   中英

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

[英]input type = number validation in angularjs

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

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

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

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

<input type=number min="configRow.valueStart" max="configRow.valueEnd"> ,然后它无效。

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

minmax期望值。 所以,这应该工作:

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

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

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

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);
      }

最大长度不适用于<input type="number"我知道的最好的方法是使用oninput事件来限制maxlength,它的通用解决方案适用于所有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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM