Jquery将HTML代码更改为纯文本

时间:2014-08-30 07:15:55

标签: javascript jquery html

以下是我的html& jquery脚本

<textarea id="id"></textarea>
<div class="messages"></div>

当我在textarea中输入内容并按回车键时,它将运行以下脚本

var x = $("textarea#id").val();
$("div.messages").append("<span class='zz'>"+x+"</span>");

它成功运作。

但是当我在textarea中输入html代码时,它只显示输入textarea的html元素
即,当我输入<b>HTML</b>时,它会显示 HTML ,但我需要<b>HTML</b> ..
我知道.text()代替.html()
但我认为,它不适用于我的代码。
因为<span class="zz">应该是一个html元素。

4 个答案:

答案 0 :(得分:3)

试试这个: -

function escape(text) {
    return text
        .replace(/&/g, "&amp;")
        .replace(/</g, "&lt;")
        .replace(/>/g, "&gt;")
        .replace(/"/g, "&quot;")
        .replace(/'/g, "&#039;");
}

var x = $("textarea#id").val();
$("div.messages").append("<span class='zz'>"+escape(x)+"</span>");

Demo

答案 1 :(得分:0)

Xmp标签将其转义

DEMO

$("#div1").html("<span><xmp>" + $("#id").val() + "</xmp></span>");

答案 2 :(得分:0)

也可以尝试将值放在pre标记内,这样它就不会被解释为HTML:

$('div.messages').html('<span class="zz"><pre>' + $("#id").val() + '</pre></span>');

然而,预标签内的东西无法设置样式。

答案 3 :(得分:0)

为什么每个人都这么复杂?

var x = $("textarea#id").val();
$("<span class='zz'></span>").text(x).appendTo($("div.messages"));