AngularJS Live Example

HTML

<script src="http://code.angularjs.org/angular-0.9.19.min.js" ng:autobind></script>

<form ng-submit="submit()" name="myForm" ng-controller="MyCtrl">
  <div>
    <input type="email" name="email" ng-model="formData.email" required novalidate/>
    <span ng-show="(myForm.email.$dirty || submitted) && myForm.email.$error.required">
      Email is required
    </span>
  </div>

  <div>
    <button type="submit">Submit</button>
  </div>
</form>

JavaScript

function MyCtrl($scope){
  $scope.submit = function(){
    // Set the 'submitted' flag to true
    $scope.submitted = true;
    // Send the form to server
    // $http.post ...
  }

  $scope.hasError = function(field, validation){
    if(validation){
      return ($scope.form[field].$dirty && $scope.form[field].$error[validation]) || ($scope.submitted && $scope.form[field].$error[validation]);
    }
    return ($scope.myForm[field].$dirty && $scope.form[field].$invalid) || ($scope.submitted && $scope.form[field].$invalid);
  };

};