AngularJS验证不检查HTML数字输入的步骤限制

时间:2016-09-07 10:50:10

标签: angularjs html5 forms

为什么AngularJS不检查第二个输入的step="0.01"属性?对于minmax属性,它可以完美运行,但不适用于step属性。

例如:输入0,​​005会将submitNewEntryForm.submitNewEntryAmount.$valid评估为true,但不应该。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>


<div ng-app="">

  <form class="form-inline" name="submitNewEntryForm">
    <div class="form-group" ng-class="submitNewEntryForm.submitNewEntrySubject.$valid ? 'has-success' : 'has-error'">
      <label for="subject">Betreff:</label>
      <input type="text" class="form-control" id="subject" required name="submitNewEntrySubject" ng-model="submitNewEntrySubject">
    </div>
    <div class="form-group" ng-class="submitNewEntryForm.submitNewEntryAmount.$valid ? 'has-success' : 'has-error'">
      <label for="amount">Betrag:</label>
      <input type="number" class="form-control" id="amount" required name="submitNewEntryAmount" ng-model="submitNewEntryAmount" step="0.01" min="0" max="99999">
    </div>
    <button type="submit" class="btn btn-primary" ng-disabled="!(submitNewEntryForm.submitNewEntrySubject.$valid && submitNewEntryForm.submitNewEntryAmount.$valid)" ng-click="">Submit</button>
  </form>

</div>

2 个答案:

答案 0 :(得分:1)

添加正则表达式,例如\d+\.\d{0,2} 您可以使用HTML5 pattern="^\d+\.\d{0,2}$"ng-pattern="^\d+\.\d{0,2}$"。它会更改错误状态,而不会将html输入限制为2个小数点。

要严格,您应该使用^\d{1,5}\.\d{,2}$

如果您希望号码有2个小数点,但允许它没有0 .01,那么您可以使用^\d*\.\d{2}$

答案 1 :(得分:1)

我没有意识到step属性有一个Angular指令。如果你查看文档,它似乎是最近的补充。

在您开始构建未发布的1.5.9版本之前,我没有发现step属性。

最新版本:https://docs.angularjs.org/api/ng/input/input%5Bnumber%5D

请注意“Usage”和“Arguments”部分中列出了step指令。现在使用左上角的下拉菜单更改版本,并观察没有提到step指令。

这是一个全新的,未发布的功能......或者旧版本的文档可能不正确:)

相关问题