我尝试从这里获得一些代码,但它只是将句子的第一个单词大写
1
function capitalize(textboxid, str) {
// string with alteast one character
if (str && str.length >= 1) {
var firstChar = str.charAt(0);
var remainingStr = str.slice(1);
str = firstChar.toUpperCase() + remainingStr + " ";
}
document.getElementById(textboxid).value = str;
}
答案 0 :(得分:2)
这是将每个单词的第一个字母大写的另一种方式
function capitalize(obj) {
str = obj.value;
obj.value = str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}

<input name="sentence" id="sentencebox" onkeyup="javascript:capitalize(this);" placeholder="Write a Sentence" class="form-control" type="text">
&#13;
答案 1 :(得分:1)
你应该在空格上拆分字符串并对每个元素运行相同的基本逻辑,然后使用''再次连接:
var capitalized = "the quick brown fox".split(' ').map(function(word) {
return word[0].toUpperCase() + word.slice(1)
}).join(' ');
console.log(capitalized)
答案 2 :(得分:1)
如果我理解正确,这将替换其中包含2个以上字符的任何单词,如果您不希望仅使用/\b([a-z])[a-z]*?/gi
function capitalize(inputField) {
inputField.value = inputField.value.replace(/\b[a-z](?=[a-z]{2})/gi, function(letter) {
return letter.toUpperCase();
});
}
<input name="sentence" id="sentencebox" onkeyup="javascript:capitalize(this);" placeholder="Write a Sentence" class="form-control" type="text">
P.S。你可以使用css来达到同样的效果:
#senterncebox:first-letter {
text-transform: uppercase;
}
css在我看来更整洁,因为像(ctrl + a)这样的快捷键只需开箱即用。