Select2 has the function "createSearchChoice":
Creates a new selectable choice from user's search term. Allows
creation of choices not available via the query function. Useful when
the user can create choices on the fly, eg for the 'tagging' usecase.
You could achieve what you want by using:
createSearchChoice:function(term, data) {
if ($(data).filter(function() {
return this.text.localeCompare(term)===0;
}).length===0) {
return {id:term, text:term};
}
},
multiple: true
Here's a more complete answer that returns a JSON result to an ajax search, and allows tags to be created from the term, if the term returned no results:
$(".select2").select2({
tags: true,
tokenSeparators: [",", " "],
createSearchChoice: function(term, data) {
if ($(data).filter(function() {
return this.text.localeCompare(term) === 0;
}).length === 0) {
return {
id: term,
text: term
};
}
},
multiple: true,
ajax: {
url: '/path/to/results.json',
dataType: "json",
data: function(term, page) {
return {
q: term
};
},
results: function(data, page) {
return {
results: data
};
}
}
});
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…