如何使用JavaScript删除html标签并保持换行?

时间:2015-11-15 17:09:27

标签: javascript jquery html replace preg-replace

我想从我的contenteditable div中删除富文本,从剪贴板粘贴内容时只保留newlinebr个标记。

我正在尝试,但它不起作用 http://jsfiddle.net/marco83/zkf5jkqu/

<div id="editableDiv" contentEditable="true" style="min-height: 200px; border: solid 1px #0099FF;"></div>

<input type="button" value="remove" onclick="strip();">

<script>
function strip() {
    var mydiv = document.getElementById("editableDiv");
    var str  = mydiv.innerHTML;
    str = str.replace(/<br>/gi, "\n");
    str = str.replace(/<(?:.|\s)*?>/g, "");
    mydiv.innerHTML = str;
}
</script>

我复制了此页http://www.jacklmoore.com/autosize/的文字 我知道它没有任何<br>标记文本。但我怎么能像Twitter这样做?感谢。

enter image description here

1 个答案:

答案 0 :(得分:4)

试试这个

<script>
    function strip() {
        var mydiv = document.getElementById("editableDiv");
        var str = mydiv.innerHTML;
        mydiv.innerHTML = remove_tags(str);
    }


    function remove_tags(html) {
        html = html.replace(/<br>/g, "$br$");
        html = html.replace(/(?:\r\n|\r|\n)/g, '$br$');
        var tmp = document.createElement("DIV");
        tmp.innerHTML = html;
        html = tmp.textContent || tmp.innerText;
        html = html.replace(/\$br\$/g, "<br>");
        return html;
    }
</script>

Example Here

所以我正在做的是,我用占位符<br>替换\n$br$以便保留它们然后我从字符串中删除所有HTML标记将$br$替换为<br>