无法利用javascript / jquery对输入中的第一个单词进行大写

时间:2014-02-05 18:12:40

标签: javascript jquery

我已经通过这个问题浏览了很多其他线程。我有问题将输入的第一个字母大写。

http://jsfiddle.net/sA9c8/2/

我似乎无法使substr()功能正常工作。它总是返回整个字符串,而每个单词都大写。

function crmForm_lastname_onblur(sourceField, sourceRowId) {
var x=document.getElementById("crmForm_lastname");
x.value=x.value.toLowerCase().replace(/\b[a-z]/g, function(letter) {
    return letter.substr(0,1).toUpperCase()+letter.substr(1);
});

console.log(x.value);
}

任何帮助将不胜感激。我不是一个Javascript专家,但我可以理解代码在某些方面做了什么。谢谢。

2 个答案:

答案 0 :(得分:1)

你是否想要这样做

function crmForm_lastname_onblur(sourceField, sourceRowId) {
    var val = sourceField.value;

    if (val.charAt(0).toUpperCase() != val.charAt(0)) 
         sourceField.value = val.charAt(0).toUpperCase() + val.slice(1)
}

FIDDLE

答案 1 :(得分:0)

鉴于您的正则表达式仅匹配单词边界后的第一个字母,您的替换函数应为:

x.value = x.value.toLowerCase().replace(/\b[a-z]/g, function (letter) {
    return letter.toUpperCase();
});

将每个单词的第一个字母大写(demo)。

如果您只希望输入中的第一个字母为captialized,请更改您的Regex并保持相同的替换功能:

x.value = x.value.toLowerCase().replace(/^[^A-Za-z]*\b[a-z]/, function (letter) {
    return letter.toUpperCase();
});

/^[^A-Za-z]*\b[a-z]/捕获输入的第一个字母(demo)。