Open In App

AngularJS Form Validation

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

AngularJS performs form validation on the client side. AngularJS monitors the state of the form and input fields (input, text-area, select), and notify the user about the current state. AngularJS also holds information about whether the input fields have been touched, modified, or not. Form input fields have the following states:

  • $untouched: It shows that field has not been touched yet.
  • $touched: It shows that field has been touched.
  • $pristine: It represents that the field has not been modified yet.
  • $dirty: It illustrates that the field has been modified.
  • $invalid: It specifies that the field content is not valid.
  • $valid: It specifies that the field content is valid.

These all are the properties of the input field which can be either true or false. Forms have the following states:

  • $pristine: It represents that the fields have not been modified yet.
  • $dirty: It illustrates that one or more fields have been modified.
  • $invalid: It specifies that the form content is not valid.
  • $valid: It specifies that the form content is valid.
  • $submitted: It specifies that the form is submitted.

These all are the properties of the form which can be either true or false. These states can be used to show meaningful messages to the user.

Example 1: This example describes the AngularJS Form Validation, where the ng-show directive is utilized to display the required warning message for the inappropriate or incorrect input.

HTML




<!DOCTYPE html>
<html>
  
<head>
      <title>AngularJS Form Validation</title>
    <script src=
    </script>
    <style>
        body {
            font-family: Arial, Helvetica, sans-serif;
        }
        h1 {
            color: green;
        }
    </style>
</head>
  
<body ng-app="">
    <h1>GeeksforGeeks</h1>
    <h3>AngularJS Form Validation</h3>
    <form name="form1">
        <p>Name:
            <input name="username" 
                   ng-model="username" required>
            <span ng-show=
"form1.username.$pristine && form1.username.$invalid">
                The name is required.</span>
        </p>
        <p>Address:
            <input name="useraddress"
                   ng-model="useraddress" required>
        </p>
    </form>
    <p>
        We use the ng-show directive to only
        show the error message <br>if the field 
          has not modified yet AND content present 
          in the field is invalid.
    </p>
</body>
</html>


Output:

 

Custom validation: To create your own validation function add a new directive to your application, and deal with the validation inside a function with certain specified arguments.

Example 2: This example describes the AngularJS Custom Form Validation by creating our own directive, containing a custom validation function, and refer to it by using app-directive. The field will only be valid if the value is greater than or equal to 18.

HTML




<!DOCTYPE html>
<html>
  
<head>
    <title>AngularJS Form Validation</title>
    <script src=
    </script>
    <style>
        body {
            text-align: center;
            font-family: Arial, Helvetica, sans-serif;
        }
        h1 {
            color: green;
        }
    </style>
</head>
  
<body ng-app="developapp">
    <h1>GeeksforGeeks</h1>
    <h3>AngularJS Custom Form Validation</h3>
    <form name="form1">
        Username:
        <input name="username" required><br><br>
        Age:
        <input name="userage" 
               ng-model="userage" required app-directive>
    </form>
    <p>The input's valid state is:</p>
    <h3>{{form1.userage.$valid}}</h3>
    <script>
        var app = angular.module('developapp', []);
        app.directive('appDirective', function () {
            return {
                require: 'ngModel',
                link: function (scope, element, attr, mCtrl) {
                    function myValidation(value) {
                        if (value >= 18) {
                            mCtrl.$setValidity('charE', true);
                        } else {
                            mCtrl.$setValidity('charE', false);
                        }
                        return value;
                    }
                    mCtrl.$parsers.push(myValidation);
                }
            };
        });
    </script>
    <p>
        <b>Note:</b>
        The input field must have
        user age greater than 18 to be
        considered valid for voting.
    </p>
</body>
</html>


Output:

 



Last Updated : 26 Aug, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads