angularjs CDN
https://angularjs.org/ Version 1.8.2 https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js
index.html
//index.html
<!DOCTYPE html>
<html lang="en" ng-app="formvalidation">
<head>
<meta charset="utf-8">
<title>AngularJS Form Validation</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<style type="text/css">
.errortext{
color:red;
}
</style>
</head>
<body ng-controller="cntform">
<h1 class="page-header text-center">AngularJS Form Validation</h1>
<div class="signup-form">
<form role="form" name="myForm" novalidate>
<h2>Register</h2>
<p class="hint-text">Create your account. It's free and only takes a minute.</p>
<div class="form-group">
<input type="text" class="form-control" name="username" placeholder="Username" ng-minlength="10" ng-maxlength="30" ng-pattern="/^[a-zA-Z0-9_]*$/" ng-model="user.username" required autofocus>
<div class="errortext" ng-show="myForm.username.$dirty && myForm.username.$invalid">
<span ng-show="myForm.username.$error.required">Username is required</span>
<span ng-show="myForm.username.$error.minlength">Username must contain atleast 10 characters</span>
<span ng-show="myForm.username.$error.maxlength">Username should not be greater than 30 characters</span>
<span ng-show="myForm.username.$error.pattern && !myForm.username.$error.minlength && !myForm.username.$error.maxlength">Only letters, numbers and underscore allowed</span>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-6">
<input type="text" class="form-control" name="firstname" placeholder="Firstname" ng-model="user.firstname" required>
<div class="errortext" ng-show="myForm.firstname.$dirty && myForm.firstname.$invalid">
<span ng-show="myForm.firstname.$error.required">Firstname is required</span>
</div>
</div>
<div class="col-xs-6">
<input type="text" class="form-control" name="lastname" placeholder="Lastname" ng-model="user.lastname" required>
<div class="errortext" ng-show="myForm.lastname.$dirty && myForm.lastname.$invalid">
<span ng-show="myForm.lastname.$error.required">Lastname is required</span>
</div>
</div>
</div>
</div>
<div class="form-group">
<input type="email" class="form-control" name="email" placeholder="Email" ng-model="user.email" required>
<div class="errortext" ng-show="myForm.email.$dirty && myForm.email.$invalid">
<span ng-show="myForm.email.$error.required">Email is required</span>
<span ng-show="myForm.email.$error.email">Invalid email format</span>
</div>
</div>
<div class="form-group">
<input type="url" class="form-control" name="url" placeholder="Website" ng-model="user.website" required>
<div class="errortext" ng-show="myForm.url.$dirty && myForm.url.$invalid">
<span ng-show="myForm.url.$error.required">Website is required</span>
<span ng-show="myForm.url.$error.url">Input a valid website</span>
</div>
</div>
<div class="form-group">
<input type="password" class="form-control" name="password" placeholder="Password" ng-model="user.password" required>
<div class="errortext" ng-show="myForm.password.$dirty && myForm.password.$invalid">
<span ng-show="myForm.password.$error.required">Password is required</span>
</div>
</div>
<div class="form-group">
<input type="password" class="form-control" name="repassword" placeholder="Re-type Password" ng-model="user.repassword" required>
<div class="errortext" ng-show="myForm.repassword.$dirty && myForm.repassword.$invalid || myForm.repassword.$dirty && user.repassword != user.password">
<span ng-show="myForm.repassword.$error.required">Re-type password is required</span>
<span ng-show="!myForm.repassword.$error.required && user.repassword != user.password">Password did not match</span>
</div>
</div>
<div class="form-group">
<label class="checkbox-inline"><input type="checkbox" required="required"> I accept the <a href="#">Terms of Use</a> & <a href="#">Privacy Policy</a></label>
</div>
<div class="form-group">
<button type="button" class="btn btn-success btn-lg btn-block" ng-disabled="myForm.$invalid || user.repassword != user.password" ng-click="submit()"><span class="glyphicon glyphicon-check"></span> Register Now</button>
</div>
<div class="alert alert-success text-center" ng-show="valid">
<button type="button" class="close" ng-click="close()"><span aria-hidden="true">×</span></button>
<span class="glyphicon glyphicon-check"></span> Form Validated
</div>
</form>
<div class="text-center">Already have an account? <a href="#">Sign in</a></div>
</div>
<script>
var app = angular.module('formvalidation', []);
app.controller('cntform', function($scope){
$scope.valid = false;
$scope.submit = function(){
$scope.valid = true;
}
$scope.close = function(){
$scope.valid = false;
}
});
</script>
<style>
body {
color: #fff;
background: #63738a;
font-family: 'Roboto', sans-serif;
}
.form-control{
height: 40px;
box-shadow: none;
color: #969fa4;
}
.form-control:focus{
border-color: #5cb85c;
}
.form-control, .btn{
border-radius: 3px;
}
.signup-form{
width: 400px;
margin: 0 auto;
padding: 30px 0;
}
.signup-form h2{
color: #636363;
margin: 0 0 15px;
position: relative;
text-align: center;
}
.signup-form h2:before, .signup-form h2:after{
content: "";
height: 2px;
width: 30%;
background: #d4d4d4;
position: absolute;
top: 50%;
z-index: 2;
}
.signup-form h2:before{
left: 0;
}
.signup-form h2:after{
right: 0;
}
.signup-form .hint-text{
color: #999;
margin-bottom: 30px;
text-align: center;
}
.signup-form form{
color: #999;
border-radius: 3px;
margin-bottom: 15px;
background: #f2f3f7;
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
padding: 30px;
}
.signup-form .form-group{
margin-bottom: 20px;
}
.signup-form input[type="checkbox"]{
margin-top: 3px;
}
.signup-form .btn{
font-size: 16px;
font-weight: bold;
min-width: 140px;
outline: none !important;
}
.signup-form .row div:first-child{
padding-right: 10px;
}
.signup-form .row div:last-child{
padding-left: 10px;
}
.signup-form a{
color: #fff;
text-decoration: underline;
}
.signup-form a:hover{
text-decoration: none;
}
.signup-form form a{
color: #5cb85c;
text-decoration: none;
}
.signup-form form a:hover{
text-decoration: underline;
}
</style>
</body>
</html>