我已经通过这个问题浏览了很多其他线程。我有问题将输入的第一个字母大写。
我似乎无法使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专家,但我可以理解代码在某些方面做了什么。谢谢。
答案 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)
}
答案 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)。