我正在尝试使用脚本撤消文本区域中的所有CAPS

时间:2013-07-15 15:53:34

标签: jquery capitalize

我有一个textarea接收所有CAPS中的输入,这对大多数用户来说都很好。一些用户需要在规范化的时尚中表示的文本 - 每个句子的第一个字母大写,其余的小写。

我尝试调整其他SO线程的一些建议,但是缺少某些东西。求救!

<form>
        <input value="Select all" onclick="javascript:this.form.finaltext.focus();this.form.finaltext.select();"  type="button">
        <input value="Clear All" onclick="this.form.finaltext.value=''" type="button">
        <input value="Normalize text" type="button"  id="normalize">
        <a href="#" id="copy-textarea"><input type=button value="Copy to Clipboard"></a><br>
        <br>
        <textarea id="finaltext" cols="80" rows="50"> </textarea>
        </form>

脚本

$(window).load(function(){
$('#normalize').click(function capitalizeSentences(){

var capText = $("#finaltext").val();
capText = capText.toLowerCase();

capText = capText.replace(/\.\n/g,".[-<br>-]. ");
capText = capText.replace(/\.\s\n/g,". [-<br>-]. ");
var wordSplit = '. ';

var wordArray = capText.split(wordSplit);

var numWords = wordArray.length;

for(x=0;x<numWords;x++) {

    wordArray[x] = wordArray[x].replace(wordArray[x].charAt(0),wordArray[x].charAt(0).toUpperCase());

        if(x==0) {
            capText = wordArray[x]+". ";
        }else if(x != numWords -1){
            capText = capText+wordArray[x]+". ";
        }else if(x == numWords -1){
            capText = capText+wordArray[x];
        }               
}
capText = capText.replace(/\[-<br>-\]\.\s/g,"\n");
capText = capText.replace(/\si\s/g," I ");  
$("#finaltext").val(capText);
});
});

更新1 现在脚本正常运作。

新问题如何针对以下情况操作.replace括号中的逻辑:

我想允许“标准化”的文本区域采用以下格式:

  
      
  • TEXT1
  •   
  • TEXT2
  •   
  • TEXT3
  •   

带有破折号,空格和所有大写字母。 .replace逻辑似乎只查找字符串中的第一个字符,但我希望它分别处理每一行(从破折号开始),然后只留下大写的第一个字母。

1 个答案:

答案 0 :(得分:1)

我正在采取以下建议并发布解决了我的点击问题的更正代码 - 感谢Ross:

我需要将我的脚本包装在window.load函数中,以便在渲染后将该函数包含在DOM中。

$(window).load(function(){
...script...

}));