Validation ng重复中的AngularJS表单验证

Validation ng重复中的AngularJS表单验证,validation,angularjs,Validation,Angularjs,因此,我试图验证ng repeat中一个项目的输入。例如,假设我有5项(1,2,3,4,5),我只想在选择了第4项时验证表单 我以前使用过ng模式来验证表单,但没有使用下拉菜单来选择item.name 我已经包括了正则表达式,我希望第4项在ng模式中得到验证 <div> <select name="name" ng-model="item.name" ng-options="item for item in items" required></select>

因此,我试图验证ng repeat中一个项目的输入。例如,假设我有5项(1,2,3,4,5),我只想在选择了第4项时验证表单

我以前使用过ng模式来验证表单,但没有使用下拉菜单来选择item.name

我已经包括了正则表达式,我希望第4项在ng模式中得到验证

<div>
  <select name="name" ng-model="item.name" ng-options="item for item in items" required></select>
</div>

<div>
  <input name="results" type="text" ng-model="item.results" ng-pattern="/^\d\d\d\/\d\d\d/" required>
</div>
否则

在select下拉列表上添加ng change指令,该指令调用控制器方法,该控制器方法设置是否验证表单的标志

例如


//内部控制器
$scope.checkIfFromShouldBeValidated=函数(){
如果($scope.item.name==4th item)$scope.shouldValidate=true;
else$scope.shouldValidate=false;
};
$scope.formSubmit=function(){
if($scope.shouldValidate&&form.$valid)| |(!$scope.shouldValidate)){
//提交表格
} 
};

看看它是否有用。

我在控制器中编写了这个递归函数来检查所有子作用域的有效性

function allValid(scope) {
    var valid = true;
    if (scope.$$childHead) {
        valid = valid && allValid(scope.$$childHead);
    }
    if (scope.$$nextSibling) {
        valid = valid && allValid(scope.$$nextSibling);
    }
    if (scope.scorePlannerForm) {
        valid = valid && scope.myForm.$valid;
    }
    return valid;
}
然后在我的控制器中,我用控制器作用域检查这一点

function formSubmit() {
      if (allValid($scope)) {
           // perform save
      }
}

您可以编写一个指令,在select小部件上的select或blur事件上执行函数。
<select ng-change="checkIfFormShouldbeValidated()" ng-model="item.name"></select>

// Inside controller
$scope.checkIfFromShouldBeValidated = function(){
   if( $scope.item.name == 4th Item ) $scope.shouldValidate = true;
   else $scope.shouldValidate = false;
};


$scope.formSubmit = function(){ 
    if(($scope.shouldValidate && form.$valid) || (!$scope.shouldValidate)){
        // Submit Form  
    } 
};
function allValid(scope) {
    var valid = true;
    if (scope.$$childHead) {
        valid = valid && allValid(scope.$$childHead);
    }
    if (scope.$$nextSibling) {
        valid = valid && allValid(scope.$$nextSibling);
    }
    if (scope.scorePlannerForm) {
        valid = valid && scope.myForm.$valid;
    }
    return valid;
}
function formSubmit() {
      if (allValid($scope)) {
           // perform save
      }
}