私はselect2 widgetを使用しており、html 形式の検索結果を表示する必要があります。
だから私はこのようにそれを使用しています:
function formatMyItem(myItem) {
return defaultEscapeMarkup(myItem.someDescription) + " <strong>(" + myItem.someOtherValue + ")</strong>";
}
function defaultEscapeMarkup(markup) {
var replace_map = {
'\\': '\',
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
"/": '/'
};
return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
return replace_map[match];
});
}
var suggestionValues = [];
for (var i = 0; i < myData.length; i++) {
var myItem = myData[i];
suggestionValues.push({
id: myItem.someKey,
text: formatMyItem(myItem)
});
}
$mySelect.select2({
width: 'resolve',
multiple: true,
data: suggestionValues,
escapeMarkup: function(m) {
// Do not escape HTML in the select options text
return m;
}
});
しかし、ユーザーが何かを検索すると、その用語はオプションの HTML 内で検索されます。
たとえば、ユーザーが「strong」を検索した場合 (一部の説明に「strong」という単語が含まれていると想定)、select2 はすべての値を提案します (すべての値に「strong」が含まれているため)。
また、ユーザーが「<」を検索すると (一部の説明に数学記号が含まれていると仮定して)、select2 はすべての値を返します (すべての値に html タグが含まれているため) が、説明内の実際の「より小さい」記号は強調表示されません。 、実際には "& lt;" に変換されているためです。
select2 で html タグ内を検索しないようにするにはどうすればよいですか?