Pixabay jQuery 自动完成转义问题

Pixabay jQuery autoComplete escape issue

我在 repo 的问题中询问过,但没有得到答案。 https://github.com/Pixabay/jQuery-autoComplete/issues/65

引号列在下拉列表中。但是当被选中时,引号出现问题(如 gif 所示)。我不知道它是如何添加到代码中的文本输入中的。 JS还不够强

我无法证明在此处粘贴脚本中的所有代码是合理的。我希望有人可以快速查看 repo 并为我指明正确的方向。

这是它的初始字符串被转义的地方

    renderItem: function (item, search){
        // escape special characters
        search = search.replace(/[$-\/?[-^{|}]/g, '\$&');
        var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
        return '<div class="autocomplete-suggestion" data-val="' + item + '">' + item.replace(re, "<b></b>") + '</div>';
    },

无法弄清楚它是从那里开始的,它是如何添加到该文本输入中的?怎么让它再次逃脱。

我知道我问了很多,我花了一天时间想弄明白,但明天我会再来的。希望有人能抽出 5 分钟时间看一下并帮助这个受苦的新手。

谢谢。

如果你使用jQuery,你可以使用这个功能:

$(selector).text(notEscapedText)

你的情况:

renderItem: function (item, search){
    return $('<div class="autocomplete-suggestion" data-val="' + item + '">').text(search);
},

或者:

renderItem: function (item, search){
    var $value = $('<b>').text(search);

    return $('<div>')
        .addClass('autocomplete-suggestion')
        .data('val', item)
        .append($value);
},

我自己修好了,肯定是草率的。

return '<div class="autocomplete-suggestion" data-val="' + item.replace("\"", "&quot;").replace("'", "&apos;") + '">' + item.replace(re, "<b></b>") + '</div>';