无法利用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[az]/g, function(letter) { return letter.substr(0,1).toUpperCase()+letter.substr(1); }); console.log(x.value); } 

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

你想这么做吗?

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

小提琴

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

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

大写每个单词的第一个字母( 演示 )。

如果您只想输入首字母中的第一个字母,请更改您的Regex并保持上述相同的替换function:

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

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