带有表达式的AngularJS ng-max(带有错误的DEMO)

时间:2018-07-12 17:07:04

标签: angularjs html5 angularjs-ng-model

我输入的内容可以是数值或百分比。我想相应地限制输入的最大数量。

有没有一种方法可以将ng-max添加为100(如果百分比),或者如果为数字则不添加?

我尝试了以下方法,但是当输入为百分比时,并没有将最大值设置为100:

<input type="number" min="0" ng-max="vm.isPercent ? '100' : ''">

2 个答案:

答案 0 :(得分:1)

您可以将表达式与isPercent一起使用。

<input type="number" min="0" max="{{isPercent ? 100 : null}}

如果isPercent为true,则将使用100作为最大值,否则,将使用null,因此将没有最大值。

答案 1 :(得分:0)

使用max属性进行插值:

    <input type="number" name="num1" ng-model="vm.num" required
           min="0" max="{{vm.isPercent ? 100 : null}}" />

<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app ng-init="vm={isPercent:true, num:101}">
  <form name="form1">
    <input type="checkbox" ng-model="vm.isPercent">Is Percent<br>
    <input type="number" name="num1" ng-model="vm.num" required
           min="0" max="{{vm.isPercent ? 100 : null}}" /><br>
    Value={{vm.isPercent ? vm.num/100 : vm.num}}
  </form>
  <div ng-show="form1.$error.max" style="color: red">
     Invalid: Percentage must be less than 100
  </div>
</body>


带有ng-max的错误的演示:

<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app ng-init="vm={isPercent:true, num:101}">
  <form name="form1">
    <input type="checkbox" ng-model="vm.isPercent">Is Percent<br>
    <input type="number" name="num1" ng-model="vm.num" required
           min="0" ng-max="vm.isPercent ? 100 : null" /><br>
    Value={{vm.isPercent ? vm.num/100 : vm.num}}
  </form>
  <div ng-show="form1.$error.max" style="color: red">
     Invalid: Percentage must be less than 100
  </div>
</body>

使用ng-max指令,如果用户输入的数字小于100,然后按向上箭头,则该数字将增加到100,然后继续增加。

它确实将其标记为错误,并阻止提交表单。