从 data-* 属性中删除 HTML,留下新行

Strip out HTML from data-* attribute, leaving New Lines

我环顾四周,但找不到此解决方案的答案。

有没有办法通过 data-* 属性从 textarea 字段中删除 HTML 标签,留下换行符?

到目前为止我的代码:http://jsfiddle.net/xymvcLcv/

我已经能够用 <br>s 替换新行,但无法弄清楚如何同时删除用户输入的任何 HTML...

.replace(/\n/g, '<br/>')

.replace(/<[^>]*>/g, '').replace(/<|>/g, '').replace('&', '&amp;').replace(/\n/g, '<br>')

在添加自己的内容之前删除 HTML 很重要。

如果您除了在他们输入后在他们的浏览器中显示它(即将其存储在数据库中)之外做任何事情,请确保您也在后端对其进行清理!客户端验证很容易解决。

要剥离 html 并仅检索文本,您可以使用

function stripHTML(html){
  var root = document.implementation.createHTMLDocument().body;
  root.innerHTML = html;
  return root.textContent;
}

要保留换行符,请使用 white-space CSS 属性:

white-space: pre; /* preserve newlines, preserve spaces, don't wrap text */
white-space: pre-wrap; /* preserve newlines, preserve spaces, wrap text */
white-space: pre-line; /* preserve newlines, collapse spaces, wrap text */