Angular:

http://angularjs.org/

HTML

<div ng-controller="MyCtrl">
    <input type="text" ng-model="name" capitalize-first>
</div>

JavaScript

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

app.filter('capitalizeFirst', function () {
    return function (input, scope) {
        var text = input.substring(0, 1).toUpperCase() + input.substring(1).toLowerCase();
        return text;
    }
});

app.directive('capitalizeFirst', ['$filter', function ($filter) {
    return {
        require: 'ngModel',
        link: function (scope, element, attrs, controller) {
            controller.$parsers.push(function (value) {
                var transformedInput = $filter('capitalizeFirst')(value);
                if (transformedInput !== value) {
                    var el = element[0];
                    el.setSelectionRange(el.selectionStart, el.selectionEnd);
                    controller.$setViewValue(transformedInput);
                    controller.$render();
                }
                return transformedInput;
            });
        }
    };
}]);

function MyCtrl($scope, $filter) {
    $scope.name = $filter('capitalizeFirst')('apple');
}