如何使用javascript来大写<input />的每个单词?

时间:2016-08-31 22:55:11

标签: javascript html

我尝试从这里获得一些代码,但它只是将句子的第一个单词大写

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

3 个答案:

答案 0 :(得分:2)

这是将每个单词的第一个字母大写的另一种方式

&#13;
&#13;
function capitalize(obj) {
  str = obj.value;
  obj.value = str.replace(/\w\S*/g, function(txt) {
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
  });
}
&#13;
<input name="sentence" id="sentencebox" onkeyup="javascript:capitalize(this);" placeholder="Write a Sentence" class="form-control" type="text">
&#13;
&#13;
&#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)这样的快捷键只需开箱即用。