Monday, July 8, 2013

Sign Up Example - angularJs - Simple Validation

This code uses a mix of AngularJs Validation and Javascript Validation, printing all error messages in the head of form:






<!DOCTYPE html>
<html ng-app="appUser">
<head>
    <title>User Management</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
    <style>
        .error-true {
            color: red;
        }
    </style>
</head>
<body>
    <div id="content" ng-controller="myControl">
      <legend> Sign Up:</legend>

      <form name="myForm" class="form-horizontal" ng-submit="signUp()" novalidate>
        <div class="alert alert-error" ng-show="validation.msg!=null && validation.msg!=''" ng-bind-html-unsafe=validation.msg></div>
        <div class="control-group">
            <label class="control-label error-{{validation.name}}" for="inputFirstName">Name</label>
            <div class="controls">
                <input type="text" name="inputFirstName" ng-model="user.first" class="input-small" placeholder="First Name" ng-Minlength="2" required >
                &nbsp;&nbsp;
                <input type="text" name="inputLastName" ng-model="user.last" class="input-small" maxlength="50" placeholder="Last Name" ng-Minlength="2" required>
            </div>
        </div>
        <div class="control-group">
            <label class="control-label error-{{validation.email}}" for="inputEmail">Email</label>
            <div class="controls">
                <input type="email" name="inputEmail" ng-model="user.email" placeholder="Email" maxlength="50" required>
            </div>
        </div>
        <div class="control-group">
            <label class="control-label error-{{validation.password}}" for="inputPassword">Password</label>
            <div class="controls">
                <input type="password" name="inputPassword" ng-model="user.password" placeholder="Password (6 or more characters)"  maxlength="20" ng-Minlength="6" required>
                <span class="error" ng-show="myForm.inputPassword.$error.minlength">&nbsp;Too short!</span>
            </div>
        </div>
        <div class="control-group">
            <label class="control-label error-{{validation.passwordVerify}}" for="inputPasswordVerify">Re-enter Password</label>
            <div class="controls">
                <input type="password" name="inputPasswordVerify" ng-model="user.passwordVerify" maxlength="20" placeholder="Re-enter password" ng-Minlength="6" required>
            </div>
        </div>
        <div class="control-group">
            <div class="controls">
                <input class="btn-primary" type="submit" value="Sign Up">
            </div>
        </div>

      </form>
    </div>
</body>

<script src="js/angular.min.js"></script>

<script>
    appUser = angular.module("appUser",[]);

    appUser.controller('myControl', function($scope){
        $scope.user={}

        $scope.signUp = function(){
            var user = $scope.user
            $scope.validation={};
            $scope.validation.msg="";

            console.log(user)
            console.log($scope.myForm)

            if($scope.myForm.$invalid){
                if ($scope.myForm.inputFirstName.$invalid || $scope.myForm.inputLastName.$invalid){
                    $scope.validation.name=true;
                    $scope.validation.msg += "- You need to provide a valid name<BR/>"
                }
                if ($scope.myForm.inputEmail.$invalid){
                    $scope.validation.email=true;
                    $scope.validation.msg += "- You need to provide a valid email<BR/>"
                }
                if ($scope.myForm.inputPassword.$invalid){
                    $scope.validation.password=true;
                    $scope.validation.msg += "- You need to provide a valid password<BR/>"
                }
                if ($scope.myForm.inputPasswordVerify.$invalid){
                    $scope.validation.passwordVerify=true;
                    $scope.validation.msg += "- You need to fill the  field \"re-enter password\"<BR/>"
                }
                return
            }

            if (user.password != user.passwordVerify){
                $scope.validation.password=true;
                $scope.validation.passwordVerify=true;
                $scope.validation.msg += "- The passwords don't match<BR/>"
                return
            }

            if($scope.myForm.$valid){
                alert("Ok");
            }

        }
    });
</script>

</html>

No comments:

Post a Comment