Make the escapeMarkup function escape html tags and some other characters and apply it to usefull places
This commit is contained in:
parent
8e9a231847
commit
a65c08097e
34
select2.js
34
select2.js
@ -263,20 +263,20 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
return sizer.width();
|
||||
}
|
||||
|
||||
function markMatch(text, term, markup) {
|
||||
function markMatch(text, term, markup, escapeMarkup) {
|
||||
var match=text.toUpperCase().indexOf(term.toUpperCase()),
|
||||
tl=term.length;
|
||||
|
||||
if (match<0) {
|
||||
markup.push(text);
|
||||
markup.push(escapeMarkup(text));
|
||||
return;
|
||||
}
|
||||
|
||||
markup.push(text.substring(0, match));
|
||||
markup.push(escapeMarkup(text.substring(0, match)));
|
||||
markup.push("<span class='select2-match'>");
|
||||
markup.push(text.substring(match, match + tl));
|
||||
markup.push(escapeMarkup(text.substring(match, match + tl)));
|
||||
markup.push("</span>");
|
||||
markup.push(text.substring(match + tl, text.length));
|
||||
markup.push(escapeMarkup(text.substring(match + tl, text.length)));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -730,7 +730,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
|
||||
formatted=opts.formatResult(result, label, query);
|
||||
if (formatted!==undefined) {
|
||||
label.html(self.opts.escapeMarkup(formatted));
|
||||
label.html(formatted);
|
||||
}
|
||||
|
||||
node.append(label);
|
||||
@ -1231,7 +1231,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
}
|
||||
|
||||
function render(html) {
|
||||
results.html(self.opts.escapeMarkup(html));
|
||||
results.html(html);
|
||||
postRender();
|
||||
}
|
||||
|
||||
@ -2412,7 +2412,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
dropdownCssClass: "",
|
||||
formatResult: function(result, container, query) {
|
||||
var markup=[];
|
||||
markMatch(result.text, query.term, markup);
|
||||
markMatch(result.text, query.term, markup, this.escapeMarkup);
|
||||
return markup.join("");
|
||||
},
|
||||
formatSelection: function (data, container) {
|
||||
@ -2440,9 +2440,21 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
tokenSeparators: [],
|
||||
tokenizer: defaultTokenizer,
|
||||
escapeMarkup: function (markup) {
|
||||
if (markup && typeof(markup) === "string") {
|
||||
return markup.replace(/&/g, "&");
|
||||
}
|
||||
var replace_map = {
|
||||
'\\': '\',
|
||||
'&': '&#amp;',
|
||||
'<': '&#lt;',
|
||||
'>': '&#rt;',
|
||||
'"': '&#quot;',
|
||||
"'": ''',
|
||||
"/": '/'
|
||||
};
|
||||
//'--': '--'
|
||||
|
||||
return String(html).replace(/[&<>"'/\\]/g, function (match) {
|
||||
return replace_map[match[0]];
|
||||
});
|
||||
|
||||
return markup;
|
||||
},
|
||||
blurOnChange: false
|
||||
|
Loading…
Reference in New Issue
Block a user