回答
演示:http://so.devilmaycode.it/jquery-convert-line-breaks-to-br-nl2br-equivalent
function nl2br (str, is_xhtml) {
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}
谢谢你完美的作品。奇怪这不是jQuery的官方功能。 – gbhall 2010-05-27 08:03:30
原因jQuery并不是要替换原生javascript函数,而是替换,它专注于CSS选择器链接和轻松访问!也许在未来的版本;-) – 2010-05-27 08:08:56
太棒了。帮助我解决了IE7不支持空格的问题:pre-wrap – 2010-11-10 22:45:20
,你可以简单地做:
textAreaContent=textAreaContent.replace(/\n/g,"<br>");
(最好是在一般的JS函数库)将这个在你的代码:
String.prototype.nl2br = function()
{
return this.replace(/\n/g, "<br />");
}
用法:
var myString = "test\ntest2";
myString.nl2br();
创建一个字符串原型功能允许您在任何字符串上使用它。
我想知道这是否有效? – jackkorbin 2014-08-22 11:38:27
是的,这对我很好。很简单的解决方案 – 2014-10-31 15:31:31
这太神奇了! – 2015-10-27 00:11:48
解决方案
使用此代码
jQuery.nl2br = function(varTest){
return varTest.replace(/(\r\n|\n\r|\r|\n)/g, "<br>");
};
在改变渲染而不是改变内容的精神,以下CSS 使得每个新行更像一个<br>
:
white-space: pre;
white-space: pre-line;
为什么两条规则:pre-line
只影响换行(感谢线索@KevinPauli)。 IE6-7和其他旧浏览器回落到更极端的pre
其中还包括nowrap
并呈现多个空间。这些和其他设置(pre-wrap
)在mozilla和css-tricks(谢谢@Sablefoste)的详细信息。
虽然我通常不喜欢S.O.偏好second-guessing the question而不是回答它,在这种情况下用<br>
标记替换换行符可能会增加易受攻击注入攻击与未清洗的用户输入。当您发现自己将.text()
呼叫更改为.html()
时,您正在穿越明亮的红线,这是字面问题意味着必须完成的。 (感谢@AlexS突出显示了这一点。)即使您当时排除了安全风险,未来的更改也可能无意中引入了它。相反,这个CSS允许你在没有标记的情况下使用更安全的.text()
来获得强大的换行符。
根据具体情况,这是最简单的解决方案,并且最能真正回答问题。你也可以考虑任何其他的'white-space:'选项,比如'pre-wrap'。见https://css-tricks.com/almanac/properties/w/whitespace/ – Sablefoste 2016-10-28 14:16:16
这真的是最好的答案 - 字符串替换解决方案意味着需要使用'.html()'来设置内容,然后依次将允许用户插入任意的HTML,除非事先过滤出来。 – 2017-07-01 20:19:26
关于''的好处。html()'危险@AlexS,试图合并。 – 2017-07-02 17:15:23
改善@Luca Filosofi的接受的答案,
如果需要的话,改变这个正则表达式的开始子句是/([^>[\s]?\r\n]?)
还将则会忽略,而不只是一个标签,其中新行来标记和一些空白后的情况下,紧接着一个换行符
另一种插入从DOM中的文本区域保持换行符文本使用Node.innerText属性,它代表一个节点及其后代的呈现文本内容。
作为一种吸气剂,它近似于用户在用光标高亮显示元素内容然后复制到剪贴板时会得到的文本。
该属性在2016年成为标准,并得到现代浏览器的大力支持。 Can I Use:97%全球覆盖当我发布这个答案。
- 1. TinyMCE问题:将换行符转换为<br />
- 2. nl2br将true转换为int并将false转换为空字符串
- 3. XSLT将新行转换为<br/>
- 4. Text Area,nl2br,换行符
- 5. 将SQL转换为等效LINQ
- 6. 将curl转换为ruby等效
- 7. nl2br多个换行
- 8. PHP XSLT将BR标签转换为<br></br>
- 9. 将Unicode字符转换为等效的ASCII字符
- 10. 将Excel换行符转换为vbCrLf?
- 11. 如何将换行符转换为\ n
- 12. 将换行符转换为
- 13. 将jQuery代码转换为Javascript等效的工具/包?
- 14. 使用.net将字符转换为html等效品
- 15. 高效地将java字符串转换为等价的枚举
- 16. Xpath:将数字转换为等效字符串
- 17. 将字符实体转换为它们的Unicode等效
- 18. 如何将MySQL字符串转换为SQL Server等效
- 19. 用BR替换unicode换行符
- 20. 将HTML转换为有效字符串
- 21. 将所有br标签转换为一个通用<br />
- 22. 将等式转换为C++
- 23. 如何将unicode字符转换为c#中的转义ascii等效字符#
- 24. 将jquery转换为jquery noConflict
- 25. 将<br>转换成使用javascript(不是php)的换行符
- 26. 如何将gsp中的raw br转换为break行?
- 27. Python的字符串转换为HTML字符等效
- 28. Jquery将字符串转换为对象
- 29. 将jquery字符串转换为php
- 30. 将KeyDown keycode转换为字符串(jQuery)
XSS注意:如果你这样做,这听起来像你直接混合用户输入和
's,这意味着你要么显示换行符或
,因此*可能*开放给XSS攻击,这如果您的输入来自网站上的任何其他用户。 – user420667 2017-01-31 03:08:48