■ Front-End ■/AngularJs

[AngularJS] 폼 입력항목 AngularJS의 유효성검사

한길(One Way) 2023. 2. 22.

SPA 작성을 쉽게 하는 자바스크립트 웹 프레임워크이다.

 

 

AngularJS에서 angular.copy() 함수를 사용하여 폼의 reset 기능을 구현해 본다. AngularJS를 사용하기 위해서 아래와 같이 angularJS CDN을 script 태그에 추가한다.

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

 

 

form 태그에 ng-app 속성을 만들고 "myApp"으로 정의하고 ng-controller 속성에는 "myCtrl"이라고 정의한다. form 태그에 novalidate 속성을 정의하면 브라우저의 유효성 검사를 하지 않는다.

 

<form ng-app="myApp" ng-controller="'myCtrl'" name="myForm" novalidate>

 

 

폼 입력항목에 required 속성을 정의한다.

 

<input type="text" name="user" ng-model="user" required>

<input type="email" name="email" ng-model="email" required>

 

 

"name" 입력항목에 유효성검사 오류시 표시되는 문구다. $dirty 는 폼에서 사용자가 값을 수정한 적이 있는지를 확인한다. $invalid 는 폼에서 입력항목의 값에 오류가 있는지를 확인한다. 참고로 $valid는 항목의 값이 정상인지를 확인한다. $pristine $pristine는 사용자가 값을 수정한 적이 없는지를 확인한다. ($dirty의 반대)

 

<span style="color: red" ng-show="myForm.user.$dirty && myForm.user.$invalid">

        <span ng-show="myForm.user.$error.required">Required name</span>

</span>

 

 

"email" 입력항목에 유효성검사 오류시 표시되는 문구다.

 

<span style="color: red" ng-show="myForm.email.$dirty && myForm.email.$invalid"> 

       <span ng-show="myForm.email.$error.required">Required email</span> 

        <span ng-show="myForm.email.$error.email">Wrong email</span> 

</span>    

 

 

버튼 ng-disabled 속성에 user 항목과 email 항목에 대한 검사를 두어 조건에 맞는 경우에 submit 기능이 수행된다.

 

<input type="submit" ng-disabled="myForm.user.$dirty && myForm.user.$invalid ||  myForm.email.$dirty && myForm.email.$invalid">

 
 

예제의 전체코드이다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>AngularJS</title>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script>
   var app = angular.module('myApp', []);
   app.controller('myCtrl', function($scope) {
      $scope.user = 'Joo HanGil';
      $scope.email = 'agapeun@naver.com';
   });
</script>
</head>
 
<body>
   <h2>Validation</h2>
   <form ng-app="myApp" ng-controller="myCtrl" name="myForm" novalidate>
      <p>
         Name : <input type="text" name="user" ng-model="user" required>
         <span style="color: red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
            <span ng-show="myForm.user.$error.required">Required name</span>
         </span>
      </p>
      <p>
         Email : <input type="email" name="email" ng-model="email" required>
         <span style="color: red" ng-show="myForm.email.$dirty && myForm.email.$invalid">
            <span ng-show="myForm.email.$error.required">Required email</span>
            <span ng-show="myForm.email.$error.email">Wrong email</span>
         </span>
      </p>
      <p>
         <input type="submit" ng-disabled="myForm.user.$dirty && myForm.user.$invalid ||  myForm.email.$dirty && myForm.email.$invalid">
      </p>
   </form>
   <hr>
</body>
</html>

 

아래와 같이 화면에 표시된다. 첫 화면에서는 컨트롤러에서 $scope에 할당한 값이 바로 표시되었다.

 

입력항목의 값을 비우면 우측에 빨간색으로 경고문구가 표시된다.



Email 입력항목에 "abc@"라고 입력하면 틀린 이메일이라고 표시된다.

728x90

댓글