【问题标题】:How to show error messages for min and max values of an input field with number type?如何显示数字类型输入字段的最小值和最大值的错误消息?
【发布时间】:2017-05-16 06:34:08
【问题描述】:

如何设置/显示使用 Angular js 在数字类型的输入字段上设置的最小值和最大值的错误消息。

<input type="number" min="0.1" max="30"/> 

【问题讨论】:

    标签: angularjs angular-validation


    【解决方案1】:

    请使用下面的代码使用 angularjs 验证在数字输入类型字段中显示最小值和最大值的错误消息。

    对于数字输入类型字段的 ng-maxlength 和 ng-minlength。

    <form name="myForm">
        <input type="number" name="count" ng-model="count" max="30" min="0.1">
        <span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
            <span ng-show="myForm.user.$error.min">Count should be above 0.1.</span>
            <span ng-show="myForm.user.$error.max">Count should be below 30.</span>
        </span>
    </form>
    

    对于文本输入类型字段的最大长度和最小长度。

    <form name="myForm">
        <input type="text" name="username" ng-model="username" ng-minlength="5" ng-maxlength="15">
        <span style="color:red" ng-show="myForm.username.$dirty && myForm.user.$invalid">
            <span ng-show="myForm.username.$error.minlength">Username should be minimum 5 character.</span>
            <span ng-show="myForm.username.$error.maxlength">Username should be maximum 15 character.</span>
        </span>
    </form>
    

    【讨论】:

    • 我可以在 minlength 和 maxlength 上使用相同的技术吗?
    • @Harish - Maxlength 和 minlength 应该用于文本长度,而不是数字类型字段。将以下代码用于文本类型输入字段的最大长度和最小长度。
    【解决方案2】:

    需要将input封装在form内,并有条件地显示错误消息:

    var app = angular.module('app', []);
    
    app.controller('test', function($scope) {
      $scope.model = {};
    });
    .error {
      color: red;
    }
    
    input {
      width: 100px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <div ng-app="app" ng-controller="test">
      <form novalidate name="myForm">
        <label for="model.data">Enter Data:</label>
        <input type="number" name="data" ng-model="model.data" min="0.1" max="30" />
        <div class="error" ng-show="myForm.data.$dirty && myForm.data.$error.min" ng-message="min">Unexpected minimum data</div>
        <div class="error" ng-show="myForm.data.$dirty && myForm.data.$error.max" ng-message="max">Unexpected maximum data</div>
      </form>
    </div>

    【讨论】:

      【解决方案3】:

      简单:

       <p class="help-block" ng-message="min || max">please enter in between 0.1 to 30.</p>
      

      <p class="help-block" ng-message="min">Min 0.1 required</p>
      <p class="help-block" ng-message="max">Max 30 Allowd</p>
      

      【讨论】:

      • 谢谢你,我会试试,让你知道:)
      【解决方案4】:

      required 添加到输入字段。

      这里是示例代码和小提琴。

      https://jsfiddle.net/nc4n61bk/

      <form>
      
      <input type="number" min="0.1" max="30" required/> 
      <input type="submit"/>
      </form>
      

      【讨论】:

        【解决方案5】:

        var app = angular.module('app', []);
        
        app.controller('test', function($scope) {
          $scope.model = {};
        });
        .error {
          color: red;
        }
        
        input {
          width: 100px;
        }
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
        <div ng-app="app" ng-controller="test">
          <form novalidate name="myForm">
            <label for="model.data">Enter Data:</label>
            <input type="number" name="data" ng-model="model.data" min="0.1" max="30" />
            <div class="error" ng-show="myForm.data.$dirty && myForm.data.$error.min" ng-message="min">Unexpected minimum data</div>
            <div class="error" ng-show="myForm.data.$dirty && myForm.data.$error.max" ng-message="max">Unexpected maximum data</div>
          </form>
        </div>

        【讨论】:

        • 欢迎来到 SO!提供没有解释的代码通常被认为是低质量的。您能否解释一下您的答案为何有效?
        【解决方案6】:
        .valueError{
           color: rgb(255, 0, 0);
           padding-top: 5px;
        }   
        
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
        <div ng-app="app" ng-controller="test">
         <form novalidate name="myForm">
        <div class="form-field required-field">
        <label for="field-value">Value</label>
        <input type="number" id="field-value" name="valueInput" class="small form-control input-md ng-valid ng-dirty" ng-model="value" min="5" placeholder="Value"/>
        <div class="valueError" ng-show="form.value.$dirty && form.value.$error.min "> Value must be atleast 5min</div>
        </div>
         </form>
        </div>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-25
          • 2020-02-28
          • 2017-01-07
          • 1970-01-01
          • 2019-09-06
          • 1970-01-01
          相关资源
          最近更新 更多