использование заглавных букв в javascript

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

У меня есть это в моем коде JavaScript. В моем html у меня есть форма ввода с классом .font.

Я хочу сделать заглавной первую букву каждого слова в .font, поэтому, например, если кто-то введет Lucida sans, оно превратится в Lucida Sans. Я не смог найти метод jQuery, который сделает это за вас, поэтому я думаю, что мне нужно использовать настоящий JavaScript, но я действительно понятия не имею, как это сделать.

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

Я использовал это, чтобы сделать первую букву всего имени шрифта заглавной, но, как я уже сказал, мне нужно сделать заглавной первую букву каждого слова.


person gardensity    schedule 06.07.2012    source источник
comment
Ищите каждый пробел, затем используйте следующий символ с большой буквы...   -  person jahroy    schedule 07.07.2012
comment
Вот вопрос, касающийся этого: stackoverflow.com/questions/5086390/jquery-camelcase   -  person Kyeotic    schedule 07.07.2012


Ответы (5)


Вы не можете просто использовать CSS?

.font {
    text-transform: capitalize;
}

В jQuery:

$(".font").css("text-transform","capitalize");
person MDEV    schedule 06.07.2012
comment
Может быть, я просто предвзят... но я бы, наверное, сказал, что это стоит того, чтобы быть принятым ответом! (Если, конечно, ОП не может указать причину, по которой это не подходит/возможно) - person MDEV; 07.07.2012

Вы можете разделить на пробелы, сопоставить функцию «верхнего регистра» с каждой частью и снова соединить их вместе.

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

В качестве альтернативы см. ucwords от PHPJS.

person Niet the Dark Absol    schedule 06.07.2012

В обычном 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'));
person Stano    schedule 06.07.2012

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

отсюда стек

person riso    schedule 06.07.2012
comment
это правда, но он может писать регулярное выражение как хочет, это просто пример - person riso; 07.07.2012
comment
Это просто разглагольствования, но теперь регулярное выражение будет захватывать пробелы и в «Lucida Sans». ) Не в верхнем регистре, конечно, но все же... ) - person raina77ow; 07.07.2012

Вот функция JavaScript, которую я только что закончил писать. Поскольку я впервые проверил StackOverflow, чтобы убедиться, что этот JavaScript существует, но его было нелегко найти, я опубликую его для вас, ребята, чтобы использовать. Надеюсь, это поможет вам, ребята, если это так, поддержите меня :)

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;
};

И вы могли бы использовать его так, например, используя вашу исходную переменную (font_name):

var FormattedTitle = FormatMyTitle(font_name);
person DoctorLouie    schedule 17.04.2014