项目中有一个需求,就是保留textarea中的换行,在网页中按原格式显示。
由于textarea中的换行为“\r\n", 用js获取textarea中的内容保存到数据库中时,“\r\n"变成了空格。
当将数据库中的数据传递到html页面时,又会自动加上”\r\n“, 但是由于html能识别的换行符为”<br>".因此有必要对textarea中的字符串进行处理。
1.在存储到数据库之前,将“\r\n"替换为"<br>". 然后在保存到数据库中。
$("#save_btn").click(function(){
var val = $("textarea").val();
val = val.replace(new RegExp("\n", "gm"), "<br>");
$.ajax({
type: "post",
url: "SaveSuggestionAction",
data: { suggestion: val,
teacherId: $("#teacherId").text()},
dataType: "text",
success: function(){
$("#suggestion").html(val);
$("#suggestion").append($("<a href='javascript:suggest()'> [编辑]</a>"));
$("textarea").html("");
$(".bottom_block").hide();
},
error: function(){
$(".bottom_block").hide();
}
});
});
2. 当从数据库获得数据后,在页面显示时设置escapeHtml="false"。 此时就可以保留正常的换行了
<s:property value="#request.teacher.checkSuggestion" escapeHtml="false"></s:property>
3. 如果我们需要将数据库中的这些字符串在textarea重新显示,并保持换行的格式。那么我们有需要将”<br>"重新转换为textarea能够识别的“\r\n”.
$.ajax({
type: "post",
url: "GetCheckSuggestionAction",
data: {teacherId: $("#teacherId").text()},
success:function(returnData){
returnData = returnData.replace(new RegExp("^\"|\"$", "gm"), ""); //去除双引号
returnData = returnData.replace(new RegExp("\\\\u003cbr\\\\u003e", "gm"), "\r\n"); //将换行转换为textarea里面能够识别的换行
$("textarea").val(returnData);
}
});