Прописать первую букву каждого слова в определенном классе - PullRequest
3 голосов
/ 04 января 2012

Можно ли использовать первую букву каждого слова в определенном имени класса, используя jQuery / javascript?Я просто хочу использовать заглавные буквы в каждом слове всех полей, помеченных классом 'capital'.

Я просто хочу, чтобы это делалось по мере их ввода, и я знаю, что вы можете сделать это с помощью css, ноэто бесполезно, поскольку оно хранится в БД в виде строчных букв.

Ответы [ 7 ]

7 голосов
/ 04 января 2012

Вот простой плагин jQuery, который может сделать это за вас:

$.fn.capitalise = function() {
    return this.each(function() {
        var $this = $(this),
            text = $this.text(),
            tokens = text.split(" ").filter(function(t) {return t != ""; }),
            res = [],
            i,
            len,
            component;
        for (i = 0, len = tokens.length; i < len; i++) {
            component = tokens[i];
            res.push(component.substring(0, 1).toUpperCase());
            res.push(component.substring(1));
            res.push(" "); // put space back in
        }
        $this.text(res.join(""));
    });
};

А потом звоните как:

$(".myClass").capitalise();

Вот рабочий пример .

5 голосов
/ 04 января 2012

Решение выглядит примерно так:

Рабочий образец: http://jsfiddle.net/Py7rW/7/

$('.captial').each(function(){
    var arr = $(this).text().split(' ');
    var result = "";
    for (var x=0; x<arr.length; x++)
        result+=arr[x].substring(0,1).toUpperCase()+arr[x].substring(1)+' ';
    $(this).text(result.substring(0, result.length-1));
});
2 голосов
/ 04 января 2012

Вы можете попробовать что-то вроде:

$('.capital').each(function() {
    var s = $(this).text().split(' ');
    for(var i=0; i<s.length; i++) {
        s[i] = s[i].substring(0,1).toUpperCase() + s[i].substring(1);
    }
    s = s.join(' ');
    $(this).text(s);
}
1 голос
/ 04 января 2012

Я бы использовал css text-transform: capitalize, чтобы избежать необходимости запускать его при каждом нажатии клавиши, и изменять действительное значение полей при изменении.

field.value= field.value.replace(/((^| )[a-z])/g, function(a, b){
    return b.toUpperCase();
});
1 голос
/ 04 января 2012

Я думаю, что это будет работать:)

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

0 голосов
/ 04 апреля 2017

Простой шаг, чтобы заглавные буквы первой буквы каждого слова:

$(document).on('keyup', '#myText', function () {
    this.value = this.value.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
});
0 голосов
/ 04 января 2012

Вы могли бы сделать что-то вроде этого. Это будет использовать заглавный текст в текстовом поле всякий раз, когда текст изменился:

$(document).ready(function() {
    $('.capital').change(function() {
        var arr = $(this).val().split(' '); 
        var result = ""; 
        for (var i=0; i<arr.length; i++){ 
            result += arr[i].substring(0,1).toUpperCase() + arr[i].substring(1);
            if (i < arr.length-1) {
                result += ' ';
            }
        } 
        $(this).val(result); 
    })
});

Вы можете увидеть рабочую скрипку здесь: http://jsfiddle.net/5dMg7/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...