更改数字输入以进行验证

时间:2014-12-11 16:31:52

标签: javascript angularjs validation input numbers

我有一个数字输入,我根据另一个表单字段动态设置minmax。我的方案如下:

  • 等级1:最小= 2,最大= 50
  • 等级2:最小= 5,最大= 1000

我在输入字段上设置了ng-change事件,以评估该数字是否遵循每个级别的规则。如果数字太高或太低,我将其设置为最小值。

<input type="number" step="1" ng-change="isValid()" ng-model="level.num" min="{{minNum}}" max="{{maxNum}}">

$scope.isValid = function () {
    if( ($scope.level.num > $scope.maxNum) || ($scope.level.nums < $scope.minNum)) {
        $scope.tooMany = true;
        $scope.level.num = $scope.minNum;
    }
};

我的问题是,我可以说我选择了第1级并希望输入15,一旦我输入1,它会自动将我的号码更改为2.我怎样才能更改号码用户已完成输入输入。

2 个答案:

答案 0 :(得分:0)

如果您使用的是角度1.3,则可以使用ng-model-options:example

<input type="text" ng-model="name" ng-model-options="{ updateOn: 'blur' }">

答案 1 :(得分:0)

我的想法是将模糊应用为最小数字强制执行的变化因素,因为如果你的最小集合是3并且输入是24等,它可以是标准用例。这样你就可以封装在1个函数中保持逻辑

<input type="number" step="1" ng-blur="isValid(true)" ng-change="isValid(false)" ng-model="level.num" min="{{minNum}}" max="{{maxNum}}">

$scope.isValid = function (blurMode) {  
    if( ($scope.level.num > $scope.maxNum) || ($scope.level.nums < $scope.minNum && blurMode)) {
        $scope.tooMany = true;
        $scope.level.num = $scope.minNum;
    }
};