【问题标题】:How to capitalize first letter of every single word in a text area?如何将文本区域中每个单词的首字母大写?
【发布时间】:2015-04-19 11:39:12
【问题描述】:

我有一个多行文本字段(“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();

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

【问题讨论】:

  • 您不只是想将每个 textarea 单词中的首字母大写吗?
  • .split("\n").split(" ") 应该可能抛出 TypeError,数组没有方法 split()
  • 你的最终目标是什么?你的问题有点混乱
  • 告诉我你的最终目标是什么,然后有人可以帮助你,我认为问题出在你的逻辑上,需要找到另一个逻辑,看看 Glen Swift 的评论你可以在你的代码中做类似的事情,因为第一个你有一个数组,所以你不能再次拆分它。如果你想要这样的东西,然后遍历数组并拆分每个项目
  • @patrykf 是的,我想将每个 textarea 单词中的每个首字母大写。

标签: javascript function pdf multiline capitalization


【解决方案1】:

我在下面提供了一个示例,尝试这样,它将解决您的问题

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

【讨论】:

  • 再次感谢。但我有点快,说这段代码完全按照我想要的方式工作。如果我想将每个单词的每个首字母大写,其余部分小写,这段代码的外观如何?
  • @renokl2014 在你的问题中你没有提到,这就是为什么我给你这个解决方案,无论如何,如果你想做这样的事情,那么首先将整个字符串转换为小写然后做同样的事情我们先完成了,我已经用工作演示更新了答案,你可以参考一下。
【解决方案2】:

Meinst du sowas?

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      一些事情:

      • 函数的参数是 Eingabe。在这种情况下,这是一个包含值的变量,在函数的第一行重新定义完全没有意义。函数看起来像这样,您不需要参数,因此,您的函数定义如下所示:

      function capitalize() {
      

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

      • 使用数组,您实际上想要创建一个二维数组。首先创建行数组,然后循环遍历这些行,正如@Entimon 的答案中所建议的那样

      • 你以

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

      应该这样做。

      【讨论】:

        【解决方案5】:

        感谢您的帮助! 正确答案基于 Arunprasanth KV 的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();
        

        再次感谢您的帮助。

        【讨论】:

          【解决方案6】:

          通过使用 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>
          

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

          【讨论】:

            猜你喜欢
            • 2015-11-10
            • 2018-01-21
            • 2021-08-08
            • 2020-08-30
            • 2015-11-04
            • 2012-11-11
            • 2012-07-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多