我正在使用textarea为元素创建实时内容编辑器,但如果输入的值是>
或<
之类的符号或混合使用这些符号,则其输出与预期的不同和文本,而不仅仅是文本,然后它不会取代而不是加倍。
以下是 Fiddle
这是jquery代码:
$("#changer").on("change keyup paste", function () {
// get current element
var thehtml = $("#tochange").html();
var thetext = $("#tochange").contents().filter(function () {
return this.nodeType === 3;
}).text().trim();
var thechange = $(this).val();
// if has element, then keep it, add text and put back
var thepurehtml = thehtml.replace(thetext, "");
var theoutput = thechange;
if ($.trim(thepurehtml) != '') {
var theoutput = thechange + thepurehtml;
}
$("#tochange").html("").html(theoutput);
return;
});
是什么导致了它以及如何解决它?
PS:我需要具有此行var theoutput = thechange + thepurehtml;
的功能,因为有时编辑的元素除了空白或文本节点之外还有html元素。
答案 0 :(得分:0)
但是我要删除这个答案,因为我没有足够的声誉来评论我发帖作为答案。
那么@SoursopTree,你真正希望实现的目标是什么?
我发现当您输入<
或>
时,行$.trim(thepurehtml)
返回空字符串(null)和null!=''
,因此下一个语句{{1} } var theoutput = thechange + thepurehtml;
= thechange
和>
= thepurehtml
。所以你得到两个符号而不是一个。
你说>