如何在Angular JS中为空和-1修改ng所需

潘都

在我的表单中,如果值选择为空或-1。它应返回“此字段为必填”错误。

我为此找到了两个解决方案
。ng-required接受正则表达式。
2.在指令中,我们可以编写ctrl。$ validators.required ...

但两者都不适合我。

我正在尝试将ng-required应用于空值和-1值。

controlDirective

function selectControlDir()
    {
        return {
            transclude: true,
            restrict: 'E',
            require: 'ngModel',
            scope: {
              ngModel: '=',
              queObj: '='
            },
            template: '<div class="form-group">\n\
<label for="{{queObj._attributeName}}" class="col-sm-5 control-label">{{queObj._text}}</label>\n\
<div class="col-sm-6"><select {{queObj._attributeName}} ng-options="ans._value as ans._promptText for ans in queObj._answerOptions" ng-model="ngModel" ng-required="queObj._required" class="form-control {{queObj._pageAttributes.cssclass}}" name="{{queObj._attributeName}}" id="{{queObj._attributeName}}"></select>\n\
</div>'
            ,
            link: function (scope, element, attrs,ctrl)
            {
                if(angular.isUndefined(scope.ngModel))
                {
                    scope.ngModel = scope.queObj._pageAttributes.defaultValue;
                }
                // add a parser that will process each time the value is
                // parsed into the model when the user updates it.
                ctrl.$validators.required = (function (value) {
                    var valueToTest = value || '';
                    // if it's valid, return the value to the model,
                    // otherwise return undefined.
                    scope.ngModel = valueToTest;
                    console.log('valueToTest='+valueToTest);
                    // ctrl.$setValidity('required', false);
                    return valueToTest.charAt(0) == '' || valueToTest.charAt(0) == '-1';
                });
            }
        };
    }

的HTML

<form class="form-horizontal text-center" role="form" name="DTOstep1" ng-submit="onSubmit(DTOstep1)" novalidate>
                <?php
                $this->load->view('themes/' . get_theme() . '/rc1/hidden');
                ?>
                <div ng-repeat="que in questions[$state.current.name]">
                    <div ng-if="que.QuestionData._fieldType === 'text'">
                        <text-control-dir ng-model="answers[que.QuestionData._attributeName]" data-que-obj="que.QuestionData"></text-control-dir>
                        <span class="form-error" ng-show="submitted && DTOstep1[que.QuestionData._attributeName].$error.required && DTOstep1[que.QuestionData._attributeName].$invalid">This field is required.</span>
                    </div>
                    <div ng-if="que.QuestionData._fieldType === 'select'">
                        <select-control-dir ng-model="answers[que.QuestionData._attributeName]" data-que-obj="que.QuestionData"></select-control-dir>
                        <span class="form-error" ng-show="submitted && DTOstep1[que.QuestionData._attributeName].$error.required && DTOstep1[que.QuestionData._attributeName].$invalid">This field is required.</span>
                    </div>
                    <div ng-if="que.QuestionData._fieldType === 'radio'">
                        <radio-control-dir ng-model="answers[que.QuestionData._attributeName]" data-que-obj="que.QuestionData"></radio-control-dir>
                        <span class="form-error" ng-show="submitted && DTOstep1[que.QuestionData._attributeName].$error.required && DTOstep1[que.QuestionData._attributeName].$invalid">This field is required.</span>
                    </div>

                </div>
                <div class="col-sm-5"></div>
                <div class="col-sm-6">
                    <input name="saveDto" type="submit" class="btn btn-success btn-lg" value="Continue" />
                    <input type="button" class="btn btn-info" name="formclone" value="+ Add More Cars"  ng-click="appendClonedDiv()" />
                </div>
            </form>

https://plnkr.co/edit/GA74YHNFxFb0ARg16Sjj?p=preview

krutkowski86

您应该创建自定义验证器:

(function () {
    "use strict";

    angular.module("autoQuote")
      .directive('customRequired', customRequired);


    function customRequired(){
      return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel){
            ngModel.$validators.required = function(modelValue, viewValue) {
              var required = scope.$eval(attrs['customRequired']);
              var value = modelValue || viewValue;

              if ( (ngModel.$isEmpty(value) || value == -1) && required) {
                return false;
              }

              return true;
            };
        }
      }
    }

})();

然后只需将custom-required="requiredOrNot"属性添加到您的select

工作中的矮人https://plnkr.co/edit/8Sqm8zSALQNldMZ9cFNt?p=preview

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Angular $ parsers管道中修改ng-model

来自分类Dev

使用ng-change时如何在Angular js中修改dom属性?

来自分类Dev

如何使用Angular.js在ng-repeat中检查数组值是否为空

来自分类Dev

我如何在 ng-repeat 中使用 Angular JS 为 1 到 9 附加 0

来自分类Dev

如何在Angular中更新ng-if?

来自分类Dev

如何在angular js中修改行内容?

来自分类Dev

如何在Angular JS中为“ ng-view”做预加载器?

来自分类Dev

如何在Angular js中将Rails中的if条件编写为ng-if?

来自分类Dev

如何在Angular JS ng-repeat中对1:1对象映射进行排序

来自分类Dev

如何在Angular JS ng-repeat中对1:1对象映射进行排序

来自分类Dev

如何在Angular JS中修改和更新数据表行?

来自分类Dev

如何在Angular JS中设置ng-valid-parse

来自分类Dev

如何在ng-repeater中应用所需的字段验证

来自分类Dev

如何在ng-repeater中应用所需的字段验证

来自分类Dev

如何在Angular 5的选择框中实现所需的?

来自分类Dev

如何在Angular 2和Node JS中的ng2-chartjs2图表中更新数据

来自分类Dev

如何在Angular的ng-if div中显示Google Map?

来自分类Dev

如何在Angular中修复ng构建项目

来自分类Dev

如何在Angular的ng-if div中显示Google Map?

来自分类Dev

如何在HTML / Angular中为数字设置ng-pattern

来自分类Dev

如何在Angular 8中修改画布上fabric.js背景图像的图像选项

来自分类Dev

如何在 Angular 中显示是/否而不是 1/0

来自分类Dev

如何在Angular JS中访问DIV的innerHTML onclick(ng-click)按钮

来自分类Dev

如何在angular js中向ng-show添加超时?

来自分类Dev

使用Angular JS时如何在ng-repeat内的img标签中显示图像?

来自分类Dev

如何在Angular.js中从指令禁用ng-show

来自分类Dev

如何在Angular js的ng-model(keypress)事件中添加条件

来自分类Dev

Angular JS-如何在ng-repeat中添加额外的DIV

来自分类Dev

如何在ng-click上切换angular js中的类

Related 相关文章

  1. 1

    如何在Angular $ parsers管道中修改ng-model

  2. 2

    使用ng-change时如何在Angular js中修改dom属性?

  3. 3

    如何使用Angular.js在ng-repeat中检查数组值是否为空

  4. 4

    我如何在 ng-repeat 中使用 Angular JS 为 1 到 9 附加 0

  5. 5

    如何在Angular中更新ng-if?

  6. 6

    如何在angular js中修改行内容?

  7. 7

    如何在Angular JS中为“ ng-view”做预加载器?

  8. 8

    如何在Angular js中将Rails中的if条件编写为ng-if?

  9. 9

    如何在Angular JS ng-repeat中对1:1对象映射进行排序

  10. 10

    如何在Angular JS ng-repeat中对1:1对象映射进行排序

  11. 11

    如何在Angular JS中修改和更新数据表行?

  12. 12

    如何在Angular JS中设置ng-valid-parse

  13. 13

    如何在ng-repeater中应用所需的字段验证

  14. 14

    如何在ng-repeater中应用所需的字段验证

  15. 15

    如何在Angular 5的选择框中实现所需的?

  16. 16

    如何在Angular 2和Node JS中的ng2-chartjs2图表中更新数据

  17. 17

    如何在Angular的ng-if div中显示Google Map?

  18. 18

    如何在Angular中修复ng构建项目

  19. 19

    如何在Angular的ng-if div中显示Google Map?

  20. 20

    如何在HTML / Angular中为数字设置ng-pattern

  21. 21

    如何在Angular 8中修改画布上fabric.js背景图像的图像选项

  22. 22

    如何在 Angular 中显示是/否而不是 1/0

  23. 23

    如何在Angular JS中访问DIV的innerHTML onclick(ng-click)按钮

  24. 24

    如何在angular js中向ng-show添加超时?

  25. 25

    使用Angular JS时如何在ng-repeat内的img标签中显示图像?

  26. 26

    如何在Angular.js中从指令禁用ng-show

  27. 27

    如何在Angular js的ng-model(keypress)事件中添加条件

  28. 28

    Angular JS-如何在ng-repeat中添加额外的DIV

  29. 29

    如何在ng-click上切换angular js中的类

热门标签

归档