jQuery - 使用符号作为输入更改元素的HTML时的奇怪行为

时间:2015-09-19 05:55:23

标签: javascript jquery html onchange symbols

我正在使用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元素。

1 个答案:

答案 0 :(得分:0)

但是我要删除这个答案,因为我没有足够的声誉来评论我发帖作为答案。

那么@SoursopTree,你真正希望实现的目标是什么?

我发现当您输入<>时,行$.trim(thepurehtml)返回空字符串(null)和null!='',因此下一个语句{{1} } var theoutput = thechange + thepurehtml; = thechange> = thepurehtml。所以你得到两个符号而不是一个。

你说&gt;