2013-07-15 16 views
0

我有一個textarea,它接收ALL 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

什麼是缺失? – RyanS

+0

對不起,當我點擊'normalize:按鈕時,沒有任何反應。我在chrome的調試器上也沒有任何錯誤。 – user1837608

+1

在您爲其聲明事件處理程序時,DOM中的標準化按鈕是否正常?如果不是,你需要使用'on'或'委託'方法 - 例如。 '$(document).on('click','#normalize',function(){});'我不知道你的頁面名稱是什麼,否則我將命名空間事件而不是整個文檔。 – Ross

回答

1

我正在下面的建議,併發布更正後的代碼是解決我的點擊問題 - 信用羅斯:

我需要換我的腳本在window.load功能,包括之後的DOM的功能渲染。

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

})); 
相關問題