4

I've made form validation using angularjs. But I am facing a problem Which is error message shown at the page load. But this message will show after getting error. Just I want to remainder that I have set validation summary using directive. What can I do?

My code is as bellow

<label>UserName</label>
<input type="text" class="form-control" name="UserName" ng-model="userVM.UserName" required ng-minlength="8" ng-maxlength="20" />
<div validation-message ng-show="customerForm.UserName.$error.required" class="error">
                    Username is required
</div>

Directive is as bellow

NusPayApp.directive("validationSummary", function () {
    return {
        restrict: "A",
        require: "^form",

        template: "<div class='alert alert-warning'><a class='close' ng-click='toggleValidationSummary()'>×</a><h4 class='alert-heading'>Warning!</h4><li ng-repeat='(expression,message) in validationMessages'>{{message}}</li></ul></div>",
        link: function (scope, element, attributes, controller) {

            scope.validationMessages = {};

            // Hooks up a watch using [ng-show] expression
            controller.watchValidation = function (expression, message) {

                // watch the return value from the scope.$eval(expression)
                scope.$watch(function () { return scope.$eval(expression); }, function (isVisible) {

                    // check if the validation message exists
                    var containsMessage = scope.validationMessages.hasOwnProperty(expression);

                    // if the validation message doesn't exist and it should be visible, add it to the list
                    if (!containsMessage && isVisible) {
                        scope.validationMessages[expression] = message;
                    }

                    // if the validation message does exist and it shouldn't be visible, delete it
                    if (containsMessage && !isVisible) {
                        delete scope.validationMessages[expression];
                    }
                });
            };
        }
    };
});

Let me help to give me suggestion. I need to make sure error message will show after form submit.

1 Answer 1

3

You can add new Variable in scope to check if form is submitted.

$scope.isFormSubmit = false

Then if your form has errors then update this flag to true

if($scope.form.$valid)
{
      //Submit your form
      $scope.isFormSubmit = false
}
else
{
     $scope.isFormSubmit = true
}

Update your HTML Code to

<div validation-message ng-show="customerForm.UserName.$error.required && isFormSubmit" class="error">
 Username is required
</div>
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.