js换行符 - 对textarea换行符的处理方案

更新日期: 2022-06-08阅读: 1.5k标签: textarea

大家做前端的时候,相信都遇到过,利用多行文本控件 textarea 录入数据,多段落回车换行,但是在页面展示时,换行就不出效果了,有什么办法可以解决呢?

其实在textarea 里面,空格和换行会被保存为/s和/n,如果我们前台输入和前台显示的文字都是在 textarea 里面,其实并不需要做任何处理,你在 textarea 里面编写的样式会按照你之前编辑时候的样式,正确的显示出来。 

那么如果你需要 textarea 编辑提交的文字,从后台返回之后,不是显示在 textarea 里面,那么就需要考虑处理空格和换行啦,下面给大家介绍几种个人觉得最简单的方法。


html代码

随便写一个textarea,我们需要把textarea显示到下方div中,dom示例如下:

<textarea name="" id="textareaid" cols="30" rows="10"></textarea>
<div id="contentshow"></div>


一、JS替换法

直接通过正则全局替换,将\n换行符替换成<br/>标签

<script>
let temp = textareaid.value.replace(/\n/g,'<br/>');
contentshow.html(temp);
</script>

 注:textareaid里面的换行符可以通过indexOf获取

textareaid.value.indexOf("\n")


二、css样式法

直接将textareaid的内容放入div中,只需1行css代码即可,white-space 属性设置如何处理元素内的空白

#contentshow { white-space: pre-wrap; }

white-space属性介绍:

描述
normal默认。空白会被浏览器忽略。
pre空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。
nowrap文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。
pre-wrap保留空白符序列,但是正常地进行换行。
pre-line合并空白符序列,但是保留换行符。
inherit规定应该从父元素继承 white-space 属性的值。


三、显示在pre标签里面

将 div 替换成 pre 标签,将提交的文本显示在 pre 标签里面。pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符,他比较常见的应用就是用来显示代码,在技术网站和博客的页面里面,pre 标签都是用来包裹代码块的。


总结

在上文中我们主要介绍了3种常用“处理textarea中的换行”这方面的相关内容,大家可以结合实际项目需求来使用,希望对大家的学习和工作有所帮助。


链接: https://fly63.com/article/detial/11678

小程序/网页实现textarea高度随内容自动改变

textarea默认的高度不是对着内容变化,而是随着内容增多,出现了滚动条。目前的需求是实现一个能够输入的textarea,并且高度跟着内容变化。以及小程序的textarea高度随内容自动改变的实现

JS使用textarea模拟post提交表单

textarea代表HTML表单多行输入域,textarea标签是成对出现的,以<textarea>开始,以</textarea>结束。cols -- 多行输入域的列数,rows -- 多行输入域的行数

jquery实现显示textarea输入字符数

起初会想到使用keyup、keydown、keypress或者是onchange事件,onchange需要失去焦点才触发, 其它三个有些对按住键盘某个键不放不生效,有些对使用中文输入法正在输入时统计不正确。

如何实现 textarea 的 autoHeight 功能

这个功能还比较常见,用来获取文本的长宽(避免了计算不准的问题),主要用于实现 textarea 自动变长。可以看到在我们使用 textarea 的时候,有时候需要感知内容的高度,然后动态撑开

自动增长Textareas的最干净技巧

想法是使 <textarea> 更像 <div>,因此它的高度可以扩展以包含当前值。这几乎是奇怪的,没有一个简单的原生解决方案,不是吗?现在我得到了一个非常好的原生解决方案。

textarea高度自动撑开_实现textarea高度自适应

textarea高度自适应,textarea高度自动增高,textarea高度自动撑开,本文通过复制textarea的html给另外一个元素pre,由于设置pre自动展开,所以不会存在有滞留的感觉,交互效果较好。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!