回答
演示: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