加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如果稍后更改值,则最小/最大验证不起作用

发布时间:2020-12-17 08:21:10 所属栏目:安全 来源:网络整理
导读:我有一个要求,其中一个字段的最小值取决于另一个字段中给出的输入. input type="number" name="minval" class="form-control" ng-model="user.minval" ng-required="true" 此输入用于验证另一个字段 input type="number" name="inputval" class="form-contro
我有一个要求,其中一个字段的最小值取决于另一个字段中给出的输入.
<input type="number" name="minval" class="form-control" ng-model="user.minval" 
      ng-required="true">

此输入用于验证另一个字段

<input type="number" name="inputval" class="form-control" ng-model="user.inputval" 
     ng-required="true" min="{{user.minval}}">

但这没有按预期工作..如果我稍后更改“minval”输入没有得到重新验证..

我已经尝试设置JS的初始值为min,如某些解决方案中所建议的那样但这也没有帮助……

PLUNKER LINK

使用ng-min / ng-max指令
app.directive('ngMin',function() {
    return {
        restrict: 'A',require: 'ngModel',link: function(scope,elem,attr,ctrl) {
            scope.$watch(attr.ngMin,function(){
                if (ctrl.$isDirty) ctrl.$setViewValue(ctrl.$viewValue);
            });

            var isEmpty = function (value) {
               return angular.isUndefined(value) || value === "" || value === null;
            }

            var minValidator = function(value) {
              var min = scope.$eval(attr.ngMin) || 0;
              if (!isEmpty(value) && value < min) {
                ctrl.$setValidity('ngMin',false);
                return undefined;
              } else {
                ctrl.$setValidity('ngMin',true);
                return value;
              }
            };

            ctrl.$parsers.push(minValidator);
            ctrl.$formatters.push(minValidator);
        }
    };
});

app.directive('ngMax',ctrl) {
            scope.$watch(attr.ngMax,function(){
                if (ctrl.$isDirty) ctrl.$setViewValue(ctrl.$viewValue);
            });
            var maxValidator = function(value) {
              var max = scope.$eval(attr.ngMax) || Infinity;
              if (!isEmpty(value) && value > max) {
                ctrl.$setValidity('ngMax',false);
                return undefined;
              } else {
                ctrl.$setValidity('ngMax',true);
                return value;
              }
            };

            ctrl.$parsers.push(maxValidator);
            ctrl.$formatters.push(maxValidator);
        }
    };
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读