当在使用textarea的时候,有一次需求,需要做到自定义换行,而不是通过textarea定宽来自动换行,其实在html中可以直接通过<br/>来换行,同时也想到用\n来实现换行,其结果是根本不鸟你。
<textarea cols="50" rows="5" id="textareaid">"adfsadfs<br/>fddsadfds \n dfadadf"</textarea>
百度几翻网上确实有说可以用\r\n去实现换行,如果只兼容微软系统的话直接\n即可,但是实验确实不行,后面想到是不是必须通过JS赋值才可以实现,于是出现如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<textarea cols="50" rows="5" id="textareaid">"adfsadfs<br/>fddsadfds \n dfadadf"</textarea>
<script type="text/javascript">
document.onclick=function(){
alert(1);
var str='5456455d4fgdfgdgdg \n dsfafdadfadfafa';
document.getElementById("textareaid").value=str;
}
</script>
</body>
</html>
成功的实现了textarea换行,所以我推断,要想实现textarea换行,必须得动态JS赋值才行。
注:百度上有说明要想实现兼容linux,unix,Mac OS,window,可以把\n换成\r\n,但我在苹果系统下用\n也实现了换行,linux,unix系统下没测试,求解
textarea文字换行保存到数据后读出来没有换行 解决方案:
1.需要保存数据库之前把textarea中的换行字符转换为<br>存储到数据库。
2当读取的时候在把<br> 替换成textarea的换行符\n就好了
注意:使用replace 方法的时候需要用正则表达式,否则只能替换第一个换行
例如:
str="你好啊:
亲爱的:
1.存储数据库之前执行
dbstr = str.replace(/\n|\r\n/g,"<br>");
2.取值的时候用正则表达式:
var reg=new RegExp("<br>","g"); //创建正则RegExp对象
var newstr=remContent.replace(reg,"\n");
3.把newstr 显示在textarea后
处理textarea的空格和换行:
用户的文章时好像没有处理输入的换行和空格,之前没有很在意,因为这次我辛苦缩进的代码居然显示一团糟,有点接受不了,鉴于最近做的需求遇到了这个问题,所以说一下这个问题,鉴于开发是在windows下的,linux和苹果有空再测试一下,因为不同的操作系统对换行的表示不一样。
其实这个处理那挺简单的,用一句代码就可以解决了,“your string”.replace(/\n/g,"<br/>").replace(/\s/g," "),换行一般是\r,\n或者\r\n,只是不同的系统不一样,大家有兴趣可以试试。原理就是textarea会把用户按钮插入字符串中,但是在浏览器中,表示换行和空格的<br/>, ,所以我们在渲染之前需要先转成浏览器的字符。
顺便提一下,可以通过H5的属性contentEditalble来实现一个简单的textarea,不过这是输入的换行和空格会转成浏览器对应的格式,再次显示的时候我们就不需要转了,但是这个属性实现文本框也会有很多棘手的问题,有兴趣可以看一下。
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛