2016-11-29 7 views
1

하나의 양식이있는 응용 프로그램에서 작업 중이며 잘못된 입력시 입력 필드에 대한 유효성 검사 오류 메시지가 표시되어야합니다.각도 : 제출 클릭시 ng-message 유효성 확인

내 양식은 다음과 같이 표시됩니다 -

enter image description here

경우 오류 메시지가 표시되어야합니다 -

  • 버튼없이 클릭 제출 잘못된 입력을 수정

    1. 입력 필드 필요한 입력 필드의 수정.

    그것은 다음과 같이 오류 메시지가 표시되어야합니다 -

    enter image description here

    내가 NG 메시지 지시어를 사용하고이를 달성하기 위해. 입력 필드의 $ dirty에 오류 메시지를 표시하는 데 도움이 될 것입니다. 하지만 제출 버튼에 대한 올바른 방법을 찾을 수 없습니다. 현재 제출 클릭시 수정할 깃발을 사용 중입니다. 그러나 나는 더 나은 접근법에 관심이있다. 이를 달성하는 데 사용할 수있는 미리 정의 된 방법이 있습니까?

    여기에 제가 시도한 전체 예제가 있으며, 여기에 대해서는 plunkr입니다.

    <!doctype html> 
    
    <head> 
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js"></script> 
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular-messages.js"></script> 
        <script> 
         var app = angular.module('myApp', ['ngMessages']); 
         app.controller('myCtrl', function($scope) { 
    
          $scope.submitForm = function() { 
           $scope.submitted = true; 
           if (myForm.$valid) { 
            alert('Form submitted with passed validation'); 
           } 
          }; 
    
         }); 
        </script> 
    </head> 
    
    <body ng-app="myApp" ng-controller="myCtrl"> 
        <form name="myForm" novalidate ng-submit="submitForm()"> 
         <label> 
          Enter your name: 
          <input type="text" name="myName" ng-model="name" ng-minlength="5" ng-maxlength="20" required /> 
         </label> 
    
         <div ng-if="submitted || myForm.myName.$dirty" ng-messages="myForm.myName.$error" style="color:red" role="alert"> 
          <div ng-message="required">You did not enter a field</div> 
          <div ng-message="minlength">Your field is too short</div> 
          <div ng-message="maxlength">Your field is too long</div> 
         </div> 
         <br> 
         <br> 
         <label> 
          Enter your phone number: 
          <input type="number" name="myPhone" ng-model="phone" ng-maxlength="20" required /> 
         </label> 
    
         <div ng-if="submitted || myForm.myPhone.$dirty" ng-messages="myForm.myPhone.$error" style="color:red" role="alert"> 
          <div ng-message="required">You did not enter a field</div> 
          <div ng-message="maxlength">Your field is too long</div> 
         </div> 
         <br> 
         <br> 
    
         <button type="submit">Submit</button> 
        </form> 
    </body> 
    
    </html> 
    

    고마워요! 당신은 양식 $submitted을 사용할 수 있습니다

  • +0

    당신은 myForm을'사용할 수 있습니다. $ submitted' – Sravan

    +0

    왜 각 2 양식 유효성 검사 기술을 사용하지 마십시오. angualr 2를 사용하는 경우 https://scotch.io/tutorials/angular-2-form-validation – Harshakj89

    +0

    @ Harshakj89, 그는 angular2.0이 아닌 'angular1.5.0'을 사용하고 있습니다. – Sravan

    답변

    2

    , Syntax: formname.$submitted

    $ 제출 : 사용자가 양식 심지어 유효하지 않은 경우를 제출 한 경우 사실.

    <!DOCTYPE html> 
     
    <html> 
     
    
     
        <head> 
     
        <link rel="stylesheet" href="style.css"> 
     
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js"></script> 
     
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular-messages.js"></script> 
     
         
     
        <script> 
     
         var app = angular.module('myApp', ['ngMessages']); 
     
         app.controller('myCtrl', function($scope) { 
     
    
     
          $scope.submitForm = function() { 
     
            
     
           if (myForm.$valid) { 
     
            alert('Form submitted with passed validation'); 
     
           } 
     
          }; 
     
    
     
         }); 
     
        </script> 
     
        </head> 
     
    
     
        <body ng-app="myApp" ng-controller="myCtrl"> 
     
        <form name="myForm" novalidate ng-submit="submitForm()"> 
     
         <label> 
     
          Enter your name: 
     
          <input type="text" name="myName" ng-model="name" ng-minlength="5" ng-maxlength="20" required /> 
     
         </label> 
     
    
     
         <div ng-if="myForm.$submitted || myForm.myName.$dirty" ng-messages="myForm.myName.$error" style="color:red" role="alert"> 
     
          <div ng-message="required">You did not enter a field</div> 
     
          <div ng-message="minlength">Your field is too short</div> 
     
          <div ng-message="maxlength">Your field is too long</div> 
     
         </div> 
     
         <br> 
     
         <br> 
     
         <label> 
     
          Enter your phone number: 
     
          <input type="number" name="myPhone" ng-model="phone" ng-maxlength="20" required /> 
     
         </label> 
     
    
     
         <div ng-if="myForm.$submitted || myForm.myPhone.$dirty" ng-messages="myForm.myPhone.$error" style="color:red" role="alert"> 
     
          <div ng-message="required">You did not enter a field</div> 
     
          <div ng-message="maxlength">Your field is too long</div> 
     
         </div> 
     
         <br> 
     
         <br> 
     
    
     
         <button type="submit">Submit</button> 
     
        </form> 
     
    </body> 
     
    
     
    </html>

    이 조각을 실행하여 확인하시기 바랍니다.

    Here is the reference

    The changed plunker link of yours

    +0

    @ durgesh.patle, 시도해 보셨습니까? – Sravan

    0

    업데이트 Plunker는 Link

    You could go with disabling submit button till your form isn't correct one