【问题标题】:Moving data back and forth between p and textarea, but preserving linebreaks在 p 和 textarea 之间来回移动数据,但保留换行符
【发布时间】:2011-02-22 03:30:22
【问题描述】:

对于获得正则表达式的人来说,这应该是一个简单的问题。

我在页面上有一个由 php 预先填充的字段,但可以使用 javascript 进行编辑。在“编辑模式”和“固定模式”之间切换时,我需要能够保留换行符。

我知道文本区域喜欢他们的换行符是\n,而普通的html喜欢看到<br />标签。我正在使用函数 .replace(/\n/g, '<br />') 从 textarea 获取到 div,但我不确定使用什么将字段重新放入 textarea 并保留换行符。

此外,我不确定将 <br /> 替换为 \n 是否安全,以防浏览器认为它更喜欢 <br>

【问题讨论】:

    标签: javascript html regex textarea


    【解决方案1】:

    当您在 CSS 中设置 white-space: pre-wrap 时,会保留换行符,无需用 br 标记替换它们。

    请参阅此示例:http://jsfiddle.net/jVBdm/

    更新: white-space: pre-wrap 不能在 IE6 和 IE7 中工作(感谢 Kenneth J 指出这一点),但 white-space: pre 可以工作——这对你来说可能不够,也可能不够。您可以使用 IE6 和 IE7 的条件样式来使用 pre 并在现代浏览器上使用 pre-wrap

    【讨论】:

    • 简单、优雅、干净。谢谢
    • 如果您关心浏览器兼容性,我不确定这是最佳选择。这在 IE6 或 IE7 中不起作用。 quirksmode.org/css/whitespace.html
    • white-space: pre 应该可以在 IE6+ 中运行——也许这就足够了。
    【解决方案2】:

    无论您使用<br /> (xhtml) 还是<br> 浏览器都应该完全一样地解析它们。

    我认为您会使用插入的相同中断标记。

    为了安全起见,我想你可以两者都做。

    txt =  txt.replace(/<br \/>|<br>/gi, '\n')
    

    【讨论】:

    • 我可以使用更简洁的 CSS 来处理它。还是谢谢
    猜你喜欢
    • 2013-07-08
    • 2015-08-16
    • 2023-03-18
    • 2019-07-26
    • 2017-05-17
    • 1970-01-01
    • 2015-12-21
    相关资源
    最近更新 更多