您现在的位置: 365建站网 > 365学习 > HTML标签textarea内部换行实现方法

HTML标签textarea内部换行实现方法

文章来源:365jz.com     点击数:1049    更新时间:2017-12-11 18:12   参与评论

当在使用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,"&nbsp;"),换行一般是\r,\n或者\r\n,只是不同的系统不一样,大家有兴趣可以试试。原理就是textarea会把用户按钮插入字符串中,但是在浏览器中,表示换行和空格的<br/>,&nbsp;,所以我们在渲染之前需要先转成浏览器的字符。
顺便提一下,可以通过H5的属性contentEditalble来实现一个简单的textarea,不过这是输入的换行和空格会转成浏览器对应的格式,再次显示的时候我们就不需要转了,但是这个属性实现文本框也会有很多棘手的问题,有兴趣可以看一下。

 

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (1049人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------