如何将文本区域中每个单词的首字母大写?

时间:2015-02-18 12:51:59

标签: javascript function pdf multiline capitalization

我有一个多行文本字段(“Adressfeld”),我希望在每个第一个字母和大写字母区域的每个单词的其余部分使用大写字母。

这是我的尝试:

function capitalize(Eingabe){
Eingabe = this.getField("Adressfeld").value;
var strArr = Eingabe.split(" ");
var newArr = [];

for(var i = 0 ; i < strArr.length ; i++ ){

var FirstLetter = strArr[i].charAt(0).toUpperCase();
var restOfWord = strArr[i].slice(1).toLowerCAse();

newArr[i] = FirstLetter + restOfWord;

}

return newArr.join(' ');

} 

Ausgabe = this.getField("Empfängername");
Ausgabe.value = capitalize();

使用上面显示的脚本,文本区域第一行中的每个单词都是大写的。但在其他每一行中,第一个词都没有大写。 我如何更改脚本以使其工作? 谢谢,

6 个答案:

答案 0 :(得分:0)

Meinst du sowas?

var textToArray = document.getElementById('myTextarea').value.split('\n');
/* Hier eine Schleife zur Bearbeitung von textToArray */
var arrayToString = textToArray.join(' ');

答案 1 :(得分:0)

split操作失败 - 第一个split的结果无法再次在另一个角色上拆分。

我认为没有理由首先用单一类型\n替换返回,然后尝试拆分\n 空格。通过单个空格替换返回更容易,然后才拆分:

var strArr = String(Eingabe.value).replace(/[\r\n]+/g," ").split(" ");

有了这个,其余的似乎都有效。


这是另一种方法,可能也可能不起作用(这取决于Javascript对“单词边界”\b的解释是否与您自己的一致):

function capitalize(Eingabe){
// Eingabe = this.getField("Adressfeld");
    var strArr = String(Eingabe.value).replace(/[\r\n ]+/g,' ');
    strArr = strArr.replace (/\b[a-z]/g, function(found) { return found.toUpperCase(); });
    return strArr;
}

答案 2 :(得分:0)

一些事情:

•该功能的论点是Eingabe。在这种情况下,这是一个包含值的变量,在函数的第一行重新定义根本没有意义。函数的样子,你不需要参数,因此,你的函数定义如下所示:

function capitalize() {

•完成后,将Eingabe正确定义为var Eingabe

•使用数组,您基本上想要创建一个二维数组。首先创建行数组,然后通过行循环,正如@Entimon在答案中建议的那样

•以

结束
this.getField("Adressfeld").value = capitalize() ;

那应该这样做。

答案 3 :(得分:0)

感谢您的帮助! 正确答案基于Arunprasanth KV&#39; jsfiddle.net/svh1jd99

function capitalize()

{
var capitalize = this.getField("Adressfeld").value;
var done = capitalize.replace(/\b./g, function(m){ return m.toUpperCase();});
return done;
};

this.getField("Adressfeld").value = capitalize();

再次感谢您的帮助。

答案 4 :(得分:0)

我在下面添加了一个示例尝试,它将解决您的问题

<强> HTML

<input type="button" value="clk" onclick="z();"/>
<textarea rows="4" id="text" cols="50">

<强> JS

function z()
{

var z=document.getElementById("text").value;
var x=z.replace(/\b./g, function(m){ return m.toUpperCase(); });
alert(x);
}

<强> DEMO

我想将每个单词的每个第一个字母转换为高位,所有其他字母都低,然后将整个字符串转换为小写。然后执行与上面相同的操作。

<强> DEMO2

答案 5 :(得分:0)

通过使用jQuery,您可以执行此操作,如下所示:

演示:https://jsfiddle.net/cxow8198/3/

<input type="text" id="input">

<script>
//usage
$("input").keyup(function() {
   toUpper(this);
});

//function
function toUpper(obj) {
    var mystring = obj.value;
    var sp = mystring.split(' ');
    var wl=0;
    var f ,r;
    var word = new Array();
    for (i = 0 ; i < sp.length ; i ++ ) {
        f = sp[i].substring(0,1).toUpperCase();
        r = sp[i].substring(1).toLowerCase();
        word[i] = f+r;
    }
    newstring = word.join(' ');
    obj.value = newstring;
    return true;   
}
</script>

查询代码段以生成字符串中每个单词的第一个字母的大写字母。这可用于防止用户在将数据输入表单时输入标题或文本的全部大写。希望这会有所帮助...