将某个类中每个单词的首字母大写

时间:2012-01-04 16:13:42

标签: javascript jquery forms

是否可以使用jQuery / javascript将某个类名中每个单词的首字母大写?我只想把标有“大写”类的所有字段的每个单词的第一个字母大写。

我只是希望它在键入时执行,我知道你可以用css来做,但这并不好,因为它仍然以小写字母的形式存储在数据库中。

7 个答案:

答案 0 :(得分:7)

这是一个简单的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();

这里是working example

答案 1 :(得分:5)

解决方案是这样的:

工作样本: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 :(得分:2)

您可以尝试以下内容:

$('.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);
}

答案 3 :(得分:1)

我认为这会奏效:)

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

答案 4 :(得分:1)

我会使用css text-transform:capitalize来避免在每个按键上运行它, 并在更改时更改字段的实际值。

field.value= field.value.replace(/((^| )[a-z])/g, function(a, b){
    return b.toUpperCase();
});

答案 5 :(得分:0)

简单步骤将每个单词的第一个字母大写:

$(document).on('keyup', '#myText', function () {
    this.value = this.value.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
});

答案 6 :(得分:-1)

你可以这样做。只要文本发生变化,这将使文本框中的文本大写:

$(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/

相关问题