AngularJS Example:

HTML

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<div ng-app="myApp">
    <div ng-controller="MyCtrl">
        <form name="former" ng-submit="doSomething()">
            <input type="text" id="answer" name="answer" ng-model="data.answer" length-asterisks="5" /> <span ng-show="former.answer.$error.lengthAsterisks">Length not correct</span>

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

JavaScript

var myApp = angular.module('myApp', []);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

myApp.controller("MyCtrl", function ($scope) {
    $scope.data = {};
});



myApp.directive('lengthAsterisks', function ($filter) {
    return {
        require: 'ngModel',
        link: function postLink(scope, element, attr, ngModel) {
            var length = parseInt(attr.lengthAsterisks);

            //For DOM -> model validation
            ngModel.$parsers.unshift(function (value) {
                var l = value ? value.length : -1;
                var valid = l === length;
                console.log("Input length is: "+l+" desired is "+length);
                ngModel.$setValidity('lengthAsterisks', valid);
                element.val($filter('asterisks')(value, length));
                return value;
            });

            //For model -> DOM validation
            ngModel.$formatters.unshift(function (value) {
                var l = value ? value.length : -1;
                console.log("Length is: " + length + " size is: " + l);
                ngModel.$setValidity('lengthAsterisks', l === length);
                return $filter('asterisks')(value, length);
            });
        }
    };
})
    .filter('asterisks', function () {
    return function (string, length) {
        console.log("Running Asterisks with: " + string + " " + length);
        if (string === undefined || string === null) {
            string = "";
        }
        string = string.replace("*", "");
        for (var i = string.length; i < length; i++)
        string += "*";
        return string
    };
});