textarea 的 wrap 属性合法值仅有 soft 和 hard(大小写不敏感,推荐小写),用于控制表单提交时换行符的处理方式:soft 保留用户输入换行符,hard 在 cols 限制处强制插入换行符并提交。

textarea 的 wrap 属性有哪些合法值
wrap 是 textarea 的原生 HTML 属性,只接受两个字符串值:soft 和 hard(大小写不敏感,但规范推荐小写)。它不控制用户按 Enter 键是否换行——那是由浏览器默认行为决定的;它只影响表单提交时,换行符是否被包含在提交数据中,以及是否与 cols 配合做自动折行显示。
常见误解是以为设成 soft 就能“让文字在框内自动换行”,其实只要没加 white-space: nowrap 这类 CSS,textarea 默认就支持视觉换行(软换行),和 wrap 无关。
submit 时换行符是否保留:wrap="soft" vs wrap="hard"
这个区别只在表单用 method="post" 提交、且 enctype 为默认的 application/x-www-form-urlencoded 时生效:
-
wrap="soft"(默认值):用户输入的换行符(\n或\r\n)会被保留在提交数据中,但不会因cols限制而额外插入换行符 -
wrap="hard":不仅保留用户输入的换行符,还会在达到cols指定列宽的位置,**强制插入换行符**(即“硬换行”),这些换行符也会随表单一起提交
注意:wrap="hard" 要生效,必须同时设置 cols 属性(例如 cols="40"),否则浏览器忽略该行为。另外,现代浏览器对 wrap="hard" 支持较一致,但某些旧版 Safari 可能表现异常。
CSS 折行和 wrap 完全无关,别混用
很多人想“让长行文字在 textarea 里自动折到下一行显示”,结果去调 wrap,这是方向错了。真正控制视觉折行的是 CSS:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
-
textarea { white-space: pre-wrap; }—— 默认值,保留换行和空格,超长行自动折行(最常用) -
textarea { white-space: normal; }—— 合并空白符,超长行自动折行(但会把多个空格/制表符压成一个空格) -
textarea { white-space: nowrap; }—— 强制不折行,出现水平滚动条
wrap 属性不影响这些 CSS 行为。哪怕你设了 wrap="off"(非法值,会被忽略),只要 CSS 是 pre-wrap,照样视觉折行。
服务端收到的换行符可能是 \r\n,别硬匹配 \n
用户在 Windows 上用 Enter 换行,浏览器通常发 \r\n;macOS/Linux 是 \n。而 wrap="hard" 插入的换行符,规范未强制要求格式,实际中多数浏览器也用 \r\n。
所以服务端解析时,建议统一处理:
- 用
.replace(/\r\n/g, '\n').replace(/\r/g, '\n')归一化为\n - 避免直接用
str.split('\n')处理可能含\r\n的输入 - 数据库存储前做清理,比前端 JS 拦截更可靠
真正容易被忽略的点是:wrap 不解决“用户粘贴富文本后带 HTML 换行标签”的问题——那得靠 JS 清洗或后端过滤,跟这个属性毫无关系。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










