Skip to content
Related Articles

Related Articles

AngularJS Form Validation

Improve Article
Save Article
  • Difficulty Level : Hard
  • Last Updated : 26 Aug, 2022
Improve Article
Save Article

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:

 


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!