首页 > 解决方案 > AngularJs 验证,所有输入必须有不同的值

问题描述

可以有 1 个或多个输入。所有输入必须具有不同的值。如何创建这样的验证(指令)?如果用户在某些输入中输入非唯一值 - 它应突出显示为无效。

现在我只有没有验证的html模板

<form name="myForm" id="myForm">
                <md-input-container ng-repeat="(key, item) in data">
                    <label>{{labels[item.id]}}</label>
                    <input ng-model="data[key].number" required>
                </md-input-container>

                <md-button ng-click="save()" class="md-raised md-button md-primary" ng-disabled="myForm.$invalid">
                    Save
                </md-button>
            </form>

更新。我设法用 ng-change 指令解决了这个问题:

模板是一样的,除了:

<input ng-model="data[key].number" name="number_{{key}}" required ng-change="validate(key, myForm)">

验证控制器中的功能:

$scope.validate = function(key, myForm) {
        for (let i = 0; i < data.length; i++) {
            if(i == key) continue;

            if(data[i].number === data[key].number){
                myForm['number_' + key].$setValidity("unique", false);
                return;
            }else{
                myForm['number_' + key].$setValidity("unique", true);
            }
        }
    };

标签: angularjs

解决方案


我会使用ng-change而不是指令。您可以传递controlNameinputValue进入您的函数,并可以进行适当的验证


推荐阅读