2017-12-21 6 views
1

이 문제에 대한 도움을 받고 싶습니다.ng-repeat 확인란에 대한 유효성 확인은 all을 한 번만 검사해야합니다.

현재 신청서에 대한 유효성 확인을하고 있습니다. 신청서는 퀴즈이며 모든 질문이 필요합니다 (비어 있지 않음). 드롭 다운과 텍스트를 사용하면 양식이없는 경우 확인란을 선택하면 문제가있는 것만 확인할 수 있습니다. 모든 checbox는 유효하다고 간주되기 전에 한 번 확인해야합니다.

내 코드 : 나는 폼 컨트롤러를 기록 콘솔 때

<form name="testForm" novalidate ng-submit="vm.success(testForm)"> 

    <div ng-repeat="question in vm.currentQuestions"> 

      <div class="item-accordion" ng-repeat="choice in question.Answers"> 

      <ion-item class="item item-checkbox"> 
       <label class="checkbox"> 
        <input type="checkbox" ng-model="placeholder" name="{{question.QuestionId}}" ng-change="vm.checkboxAnswer(choice)" ng-required="true"> 
       </label> 
        {{choice.Text}} 
      </ion-item> 

      </div> 

    </div> 

</form> 

, 나는, 그러나 아무것도 ($ 유효, $ 오류, $ 더러운) 변경이 입력에 대한 유효성 검사를 볼 수 있습니다. 나는 왜 변화가 없는지 이해하지 못합니다. 모든 체크 박스를 한 번만 체크했을 때 $ valid가 true로 바뀌지 만, 체크 박스가 1 개만 선택되면 $ valid가 true로 설정되어야합니다.

$scope.checkbox=""; 

하고 필수 NG에 의해 호출 된 반환 방법을 선언해야합니다 :

$scope.checkboxValidation=function(){ 
if($scope.checkbox=='') 
return true; 
} 
+0

내 생각 엔'novalidate'이 (가) 양식에 사용되었습니다. –

+0

@AlekseySolovey 텍스트 및 드롭 다운 유형의 입력에 문제가없는 것 같습니다. –

+0

이 무엇입니까? [확인란의 그룹에 HTML5 "필수"속성을 사용 하시겠습니까? ] (https://stackoverflow.com/questions/6218494/using-the-html5-required-attribute-for-a-group-of-checkboxes)? –

답변

0
<div ng-repeat="question in vm.currentQuestions"> 

     <div class="item-accordion" ng-repeat="choice in question.Answers"> 

     <ion-item class="item item-checkbox"> 
      <label class="checkbox"> 
       <input type="checkbox" ng-model="checkbox" name="{{question.QuestionId}}" ng-change="vm.checkboxAnswer(choice)" ng-required="checkboxValidation()"> 
      </label> 
       {{choice.Text}} 
     </ion-item> 

     </div> 

</div> 

당신은 당신의 모델을 선언해야 ng-submit 옆에 다른 도우미 함수를 사용할 수 있습니다. 아래 함수를 작성하십시오.

var questions = []; 

function everyChecked() { 
    var formValid = true; 
    foreach(question in questions) { 
     var currentQuestion = false; 
     foreach(answer in question.answers) { 
      currentQuestion = currentQuestion || answer.value 
     } 
     formValid = formValid && currentQuestion; 
    } 

    return formValid; 
} 

ng-submitng-submit = vm.everyChecked() && vm.success(testForm)으로 변경하려면 ng-model 개의 체크 박스를 유효성 검사 기능에서 해당 값을 사용하기 위해 개체 필드에 올바르게 바인딩해야합니다.

0

당신을 당신이 빈 문자열로 컨트롤러에

관련 문제