DIV CSS 佈局教程網

textarea換行js示例
編輯:JavaScript基礎知識     

在easyui中的datagrid中使用行內編輯時textarea的換行保存到mysql數據庫為\n
在textarea中輸入回車符 在js讀取textarea中的值有\r\n然後到業務層轉換到string中就有可能變成空格形式然後被存入數據庫,當在取出此值的時候則會變成空格的形式,因此我們需要將不顯示的\r\n替換一下。

  在js取textarea的時候:

  如果用

var str = document.getElementById("textarea").value;
str = str.replace("\r\n","<br>");

  則只會將第一個\r\n替換成<br>,如何將所有n個\r\n替換成<br>呢?難道要無限個replace嗎?

  其實不用,replace可以和正則表達式結合,一次替換所有的\r\n。

var reg=new RegExp("\r\n","g");
str= str.replace(reg,"\r\n");

  這樣str中所有的\r\n就替換成<br>了.然後可以將其存入數據庫。

  在取出的時候 只用將值在替換回來即可

var reg=new RegExp("<br>","g");
stt= str.replace(reg,"\r\n");
document.getElementById("textarea").value=str;

  更加詳細的分析和應用可以參考JavaScript的replace方法與正則表達式結合應用講解

  下面是我寫的2個函數 直接放到通用包中 以後使用可以替換

function replaceTextarea1(str){
var reg=new RegExp("\r\n","g");
var reg1=new RegExp(" ","g");

str = str.replace(reg,"<br>");
str = str.replace(reg1,"<p>");

return str;
}


function replaceTextarea2(str){
var reg=new RegExp("<br>","g");
var reg1=new RegExp("<p>","g");

str = str.replace(reg,"\r\n");
str = str.replace(reg1," ");

return str;
}

 2. html中通<textarea>標簽提交的內容會將回車轉變成"\r\n",再將提交的內容放入<textarea>標簽中顯示時,回車符會還原成正常的換行。

但當帶有"\r\n"的字符串放在html的普通文本域中顯示時 ,原來的換行效果會轉變成空格,因此,需要在顯示前將字符串中的"\r\n"替換為"</br>"。

另外,還有一點需要注意:EL表達式會將"</br>"換行符轉變成"&lt;/br&gt;","&lt;"和"&gt;"分別對應"<"和">",也就是說,到了頁面上,還是顯示為"</br>"(呵呵,EL的智能化程度太高了),為了補救這一點,需要使用jsp標簽(<%= %>)來進行顯示。

所以當需要在普通文本域中顯示由<textarea>提交的內容時,可以直接在數據庫裡存儲不經過處理的字符串,而只在顯示前將"\r\n"替換為"</br>",然後在頁面上使用<%= %>來顯示這些內容.



3. 如果將通過textbox提交到數據庫中的空格和回車正確顯示出來
public   string   MyReplace(string   mystr)   
  {   
  if(mystr   ==   null   ||   mystr   ==   ""   )   
  {   
  return("&nbsp;");   
  }   
  else   
  {   
  mystr   =   mystr.Replace("\n\r","<br>");   
  mystr   =   mystr.Replace("\r","<br>");   
  mystr   =   mystr.Replace("\t","  ");   
  return(mystr);   
  }   
  }

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved