在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;
}
html
2. html中通<textarea>標籤提交的內容會將回車轉變成"\r\n",再將提交的內容放入<textarea>標籤中顯示時,回車符會還原成正常的換行。
但當帶有"\r\n"的字符串放在html的普通文本域中顯示時 ,原來的換行效果會轉變成空格,所以,須要在顯示前將字符串中的"\r\n"替換爲"</br>"。
另外,還有一點須要注意:EL表達式會將"</br>"換行符轉變成"</br>","<"和">"分別對應"<"和">",也就是說,到了頁面上,仍是顯示爲"</br>"(呵呵,EL的智能化程度過高了),爲了補救這一點,須要使用jsp標籤(<%= %>)來進行顯示。
因此當須要在普通文本域中顯示由<textarea>提交的內容時,能夠直接在數據庫裏存儲不通過處理的字符串,而只在顯示前將"\r\n"替換爲"</br>",而後在頁面上使用<%= %>來顯示這些內容.
3. 若是將經過textbox提交到數據庫中的空格和回車正確顯示出來
public string MyReplace(string mystr)
{
if(mystr == null || mystr == "" )
{
return(" ");
}
else
{
mystr = mystr.Replace("\n\r","<br>");
mystr = mystr.Replace("\r","<br>");
mystr = mystr.Replace("\t"," ");
return(mystr);
}
}mysql