HTML - DIV内容中的换行符可编辑吗?

Afo*_*uis 42 html css html5 contenteditable

我在数据库中存储内容,例如:

Hello
This
is 
Text
Run Code Online (Sandbox Code Playgroud)

当我将它传递给textarea时,它会保留新的换行符.但是,如果我将该文本传递给内容可编辑的div,它将保持如下:

Hello This is Text
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Exp*_*lls 113

在div上设置样式:white-space: prewhite-space: pre-wrap

示例:http://jsfiddle.net/fPv6S/

  • 这个答案应该得到更多的赞美.如果有人需要关于`white-space`的信息(我亲自去了'pre-wrap`):https://developer.mozilla.org/en-US/docs/Web/CSS/white-space (7认同)
  • 这个问题是关于contenteditable,而不是textarea (6认同)
  • 问题说 contenteditable,你的小提琴使用 textarea,它们完全不同 - 这个答案应该被忽略。 (4认同)
  • @Explosion Pills - 我完全理解这一点,我重复一遍:这个问题是关于 contenteditable 的,而不是关于 textarea 的。 (3认同)
  • 甚至是 `white-space:pre-line` (2认同)
  • 由于某种原因,它无法在chrome上的android系统上运行?这是一个错误吗?我认为chrome会创建div以创建新行:( (2认同)

小智 5

尝试这个......

var patt2 = new RegExp("<div>","g");
var patt3= new RegExp("</div>","g");
var patt4= new RegExp("<br>","g");
var z=x.replace(patt2,"\n").replace(patt3,"").replace(patt4,"");
Run Code Online (Sandbox Code Playgroud)

这样就可以了...


Seb*_*bas 5

要在@Explosion Pills上添加一些正确答案的信息,并从MDN中提取一些信息:

CSS white-space属性可以帮助您:

上一个:

white-space: pre
Run Code Online (Sandbox Code Playgroud)

保留空白序列。行仅在源和<br>元素中的换行符处断开。

如示例所示,这可能会导致不必要的水平滚动条!

预包装:

white-space: pre-wrap
Run Code Online (Sandbox Code Playgroud)

保留空白序列。在换行符处的行被断开<br>,并在必要时填充行框。

正如@ceremcem指出的那样,当复制粘贴文本时,框末尾的换行符不会被传输,这是有道理的,因为这些换行符不是文本格式的一部分,而是视觉外观的一部分。

前行:

white-space: pre-line
Run Code Online (Sandbox Code Playgroud)

空白序列被折叠了。在换行符处的行被断开<br>,并在必要时填充行框。

编辑08/14/2018:

在Chrome中,您可能会遇到麻烦:按下Enter<div>在您的内容可编辑内容中生成一个新内容。为防止这种情况,您可以按Shift+ Enter或将其设置display: inline为可编辑的内容,<div>如小提琴中所示。