您现在的位置是:网站首页> 编程资料编程资料
处理textarea中的换行和空格如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度用CSS实现textArea中的placeholder换行功能关于textarea文本转为html即回车换行HTML里面Textarea换行问题总结如何在textarea文本输入区内实现换行
2021-08-31
987人已围观
简介 这篇文章主要介绍了处理textarea中的换行和空格,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
当我们使用 textarea 在前台编辑文字,并用 js 提交到后台的时候,空格和换行是我们最需要考虑的问题。在textarea 里面,空格和换行会被保存为/s和/n,如果我们前台输入和前台显示的文字都是在 textarea 里面,其实并不需要做任何处理,你在 textarea 里面编写的样式会按照你之前编辑时候的样式,正确的显示出来。
那么如果你需要 textarea 编辑提交的文字,从后台返回之后,不是显示在 textarea 里面,那么就需要考虑处理空格和换行啦。
其实之前在接触的时候,完全没有考虑过这些问题,也是因为最近做的项目里面有一个这样子的需求,要求用户在 textarea 输入文字,提交之后以文章的格式显示在页面上。不管用户输入的时候打了多少空格,默认每段文字都只缩进2个字符,且要考虑用户上传的诗歌形式,也就是每个段落之间可能有两行空白。总而言之一句话总结呢,就是—去掉用户的输入的空格,保留段落之间的换行。
那么我最终的做法就是,在保存的时候还是不做任何处理,直接保存到后台。显示的时候,从后台获取到文本之后,去掉文中的所有空格,然后显示在标签里面。
这里我用一个小例子来示意一下textarea在各种情况下的保存和显示。首先创建一个简单的 html 页面,为了方便获取数据和显示,我引入 vue 来处理数据,给提交按钮绑定一个点击事件,点击确定之后,显示在下面。基本的页面结构和 js 如下:
// js部分 const vm = new Vue({ el:'#app', data:{ text1:'', text2:'' }, methods:{ submitText(){ this.text2 = this.text1; } } })请输入内容:
显示的内容:
不处理空格和换行 显示在 textarea 里面
这一步就很简单了,直接点击提交,可以看到效果,如下图。在未做任何处理的情况下,保留了所有的空格和换行,适合保存再编辑。

不处理空格和换行 显示在 div 里面
把刚刚第二个 textarea 替换成 div ,效果如下图。可以看到空格和换行符都没有被处理出来,直接被忽略掉了。
请输入内容:
显示的内容:
{{text2}}

不处理空格和换行 显示在 pre 标签里面
将 div 替换成 pre 标签,将提交的文本显示在 pre 标签里面。pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符,他比较常见的应用就是用来显示代码,在技术网站和博客的页面里面,pre 标签都是用来包裹代码块的。
可以从下图的效果看出,pre 标签也可以完全实现保留用户所输入的空格和换行,看上去似乎能够达到我的基本需求了。那么接下来的问题就是,如何去掉空格,并且实现自动缩进2个字符。
请输入内容:
显示的内容:
{{text2}}
那么我试试直接给 pre 标签设置 css 属性text-index:2em;?这样能够实现需求吗?答案显然是不行,因为这个属性规定的是块级元素首行文本的缩进,而这里从始至终都只有一个块级元素 pre ,显然是不能实现。而且我们还要考虑到用户自己输入的空格。
替换空格保留换行
既然直接显示行不通,看来还是必须要处理文本,那我们就处理一下。首先尝试,去掉所有的空格,首先想到的就是trim()方法。思路就是,以换行符为分割,获取到每一段文本,然后用trim()方法去掉文本前后的空格,用
标签把每段文字包裹起来,再把每一段用换行标签拼接起来。同时,不用pre标签来显示文本了,直接将处理过后的的 html 片段插入到 div 标签里面,这里用到的是 vue 的 v-html 属性。
// js部分 submitText(){ let arr = []; this.text1.split('\n').forEach(item=>arr.push(`请输入内容:
显示的内容:
${item.trim()}
`)); this.text2 = arr.join('
'); }
如下图所示,基本实现自动缩进和保留换行啦。

下面我们输入一段诗歌,加上一些样式,看看最终效果如何:

再输入一段文章,输入的时候打乱文章的缩进,可以看到不管我们如何缩进,显示效果始终都是缩进两个字符,那么就实现需求啦!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- VSCode 自定义html5模板的实现vscode怎么设置html标签自动补全? vscode自动补全html的技巧解决vscode 中保存后html自动格式化的问题VSCode怎么安装插件运行HTML文件?SublimeText3怎么快速输入html5格式?Sublime Text2怎么新建一个HTML头部文件?sublime / vscode 快捷生成HTML代码的实现
- HTML5 图片悬停放大的实现代码示例CSS3防疫知识图文响应式布局代码CSS3响应式个人名片图文布局代码详解CSS3实现响应式手风琴效果css3 响应式媒体查询的示例代码html用title属性实现鼠标悬停显示文字 html+css实现响应式卡片悬停效果
- Html5写一个简单的俄罗斯方块小游戏
- html5自定义video标签的海报与播放按钮功能html5移动端自适应布局的实现吃透移动端 Html5 响应式布局HTML5 通过Vedio标签实现视频循环播放的示例代码HTML5中在title标题标签里设置小图标的方法html5用video标签流式加载的实现详解HTML5 Canvas标签及基本使用详解HTML5布局和HTML5标签
- HTML5 3D旋转相册的实现示例微信小程序之html5 canvas绘图并保存到系统相册HTML5+css3:3D旋转木马效果相册HTML5 Plus 实现手机APP拍照或相册选择图片上传功能HTML5 CSS3打造相册效果附源码下载
- H5页面适配iPhoneX(就是那么简单)Html5 页面适配iPhoneX(就是那么简单)Html5移动端适配IphoneX等机型的方法Html5适配iphoneX刘海屏的简单实现简述Html5 IphoneX 适配方法有关HTML5页面在iPhoneX适配问题
- web字体加载方案优化小结html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- HTML5 Blob 实现文件下载功能的示例代码深入解析HTML5中的Blob对象的使用
- 使用数据结构给女朋友写个Html5走迷宫游戏HTML5实现的熊猫弹跳小游戏源码HTML5实现的卡牌配对小游戏源码js实现的魔塔闯关类小游戏源码html5 迷宫游戏(碰撞检测)实例一
- 五分钟学会HTML5的WebSocket协议html5 http的轮询和Websocket原理基于HTML5的WebSocket的实例代码HTML5中的websocket实现直播功能HTML5-WebSocket实现聊天室示例浅析HTML5的WebSocket与服务器推送事件带你认识HTML5中的WebSocketHTML5实现WebSocket协议原理浅析html5的websockets全双工通信详解学习示例利用html5的websocket实现websocket聊天室
