angularjs force uppercase in textbox

Please see the other answer below, which is superior to this one.

this answer is based on the answer here: How to autocapitalize the first character in an input field in AngularJS?.

I’d imagine that what you’d want would be a parser function like this:

  .module('myApp', [])
  .directive('capitalize', function() {
    return {
      require: 'ngModel',
      link: function(scope, element, attrs, modelCtrl) {
        var capitalize = function(inputValue) {
          if (inputValue == undefined) inputValue="";
          var capitalized = inputValue.toUpperCase();
          if (capitalized !== inputValue) {
            // see where the cursor is before the update so that we can set it back
            var selection = element[0].selectionStart;
            // set back the cursor after rendering
            element[0].selectionStart = selection;
            element[0].selectionEnd = selection;
          return capitalized;
        capitalize(scope[attrs.ngModel]); // capitalize initial value
<script src=""></script>

<div ng-app="myApp">
  <input type="text" ng-model="name" capitalize>

Leave a Comment