2

我正在处理一个富文本编辑器,但是当我尝试使用 jQuery.html() 在我的“contenteditable”div 中插入 hmtl 实体时,这些实体会被解释。

如果我做:

<textarea><b>Hey, look.. this is how do yo make your text bold:</b>&gt;b&lt&;{text}&gt;/b&lt;</textarea>

并尝试使用以下方法在富文本编辑器中转换该文本区域:

this.$editor.html($textarea.val());

我的期望:

嘿,看..这就是如何让你的文字加粗:

<b>{text}</b>

我得到什么:

嘿,看..这就是如何让你的文字加粗: {text}

显然,在这种情况下我不能使用 jQuery.text() ......有什么想法吗?更改我的编辑器不是一个选择。

编辑:例如,这里:http: //jsfiddle.net/nNuKk/3/

4

2 回答 2

3

根据评论中的 jsfiddle Here is another working example ,这里的关键是escape甚至&&lt;or中的 & 符号&gt;

只需使文本区域中的文本如下所示

 <b>Hey, look.. this is how do you make your text bold:</b>
&amp;lt;b&amp;gt;{text}&amp;lt;/b&amp;gt;

如果这是您要寻找的内容,请接受答案:) 或让我知道您的意见/疑虑。


工作示例 假设

 <body>
    <textarea id="myid"><b>Hey, look.. this is how do yo make your text bold:</b>&gt;b&lt&;{text}&gt;/b&lt;</textarea>

    <div id=2>

    </div>
</body>

然后是 javascript

   $("#2").text($("#myid").val());

所以在你的情况下你应该使用

this.$editor.text($textarea.val());

代替

this.$editor.html($textarea.val());

If this does not work let me know what element type is your $editor textarea orspan or anything else

If above does not work try this

 var temp=$("<div></div>").text($textarea.val()).html(); //temp will contain the escaped representation
 this.$editor.html(temp); 
于 2013-04-30T15:40:58.130 回答
0

您遗漏了细节-例如您使用的富编辑器,但听起来您的编辑器使用的 .html() 与 jquery 用于操作 DOM 的 .html() 不同(因为如果是这样的话,你想做的事情会起作用)

您的实际解决方案将取决于相关编辑器的实现......

于 2013-04-30T15:38:23.463 回答