gardensity
gardensity

Reputation: 64

javascript capitalization

var font_name = $(".font").val();

I have this in my JavaScript code. In my html I have an input form with the class .font.

I want to capitalize the first letter of each word in .font, so for example if someone types in Lucida sans it'll turn into Lucida Sans. I couldn't find a jQuery method that does it for you so I guess I have to use actual JavaScript but I really have no idea how.

var font_first = font_name.substr(0,1);
var font = font_first.toUpperCase() + font_name.substr(1, font_name.length - 1);

I used this to capitalize the first letter of the whole font name but as I said I need to capitalize the first letter of each word.

Upvotes: 0

Views: 535

Answers (5)

DoctorLouie
DoctorLouie

Reputation: 2674

Here's a JavaScript function I just finished writing. Since I first checked StackOverflow to see if this JavaScript was around, but wasn't easily found, I'll post it for you guys to use. Hope it helps you guys, if it does, uptick me :)

var FormatMyTitle = function(UnformattedData) {
    var OutgoingData = UnformattedData;
    if (UnformattedData.indexOf("") != -1) {
        var OptionNameParts = UnformattedData.split(' ');
        for (var i=0; i<OptionNameParts.length; i++) {
            var OptionNamePieces = OptionNameParts[i].split('');
            if (OptionNamePieces.length >= 1) {
                var FirstLetter = ''+OptionNamePieces[0]+'';
                OptionNamePieces[0] = FirstLetter.toUpperCase();
            }
            OptionNameParts[i] = OptionNamePieces.join('');
        }
        OutgoingData = OptionNameParts.join(' ');
    }
    return OutgoingData;
};

And you would use it like so, for instance, using your original variable(font_name):

var FormattedTitle = FormatMyTitle(font_name);

Upvotes: 0

Stano
Stano

Reputation: 8949

In plain javascript:

function firstcap(str) {
  var len = str.length;
  var re = /^\s$/;
  var special = true; // signalizes whether previous char is special or not
  for (var i=0; i<len; i++) {
    var code = str.charCodeAt(i);
    if (code>=97 && code<=122 && special) {
      str = str.substr(0, i) + String.fromCharCode(code-32) + str.substr(i+1);
      special = false;
    }
    else if (re.test(str[i])) {
      special = true;
    }
  }
  return str;
}

alert(firstcap('lucida sans'));

Upvotes: 1

MDEV
MDEV

Reputation: 10838

Can you not just use CSS?

.font {
    text-transform: capitalize;
}

In jQuery:

$(".font").css("text-transform","capitalize");

Upvotes: 4

riso
riso

Reputation: 232

var str = "hello world";
str = str.toLowerCase().replace(/\b./g, function(letter) {
    return letter.toUpperCase();
});
alert(str);

from here stack

Upvotes: 0

Niet the Dark Absol
Niet the Dark Absol

Reputation: 324830

You can split on spaces, map the "uppercasing" function to each piece, and join them back together.

var font_name = $(".font").val();
font_name = font_name.split(" ")
                     .map(function(a) {return a.charAt(0).toUpperCase()+a.substr(1);})
                     .join(" ");

Alternatively, see ucwords by PHPJS

Upvotes: 2

Related Questions