我在我的文章跟踪应用程序中使用select2进行标记搜索,我注意到当你开始输入时,说“m”,“mi”,你会认为“迁移”首先会突出显示,但它会从任何东西开始有'm',就像形式一样。如图所示,“表单”首先出现,搜索得越多就会变得非常烦人。
如果你输入“mi”,我希望首先出现以“mi”开头的任何内容,而不是包含m和i的“form-middle”之类的东西。如何根据拼写正确制作select2查找标签?谢谢
答案是由于某种原因不起作用,也不是doc中提供的默认答案:
<select style="width:90%;" multiple="multiple" id="selected_tags" name="selected_tags">
{% for tag in tags %}
<option value="{{tag.slug}}">{{tag.name}}</option>
{% endfor %}
</select>
....
$(document).ready(function() {
$("#selected_tags").select2({
sortResults: function(results, container, query) {
if (query.term) {
// use the built in javascript sort function
return results.sort(function(a, b) {
if (a.text.length > b.text.length) {
return 1;
} else if (a.text.length < b.text.length) {
return -1;
} else {
return 0;
}
});
}
return results;
}
});
});
答案 0 :(得分:1)
您可以对结果进行排序,请查看 documentation here 。根据查询的字符串索引排序。您可以使用 sort()
方法中的javascript构建对结果数组进行排序。
printf "%\n" "${array[@]}"
&#13;
$("#e1").select2({
sortResults: function(results, container, query) {
console.log(query);
if (query.term) {
// use the built in javascript sort function
return results.sort(function(a, b) {
console.log(a.text.indexOf(query),b.text.indexOf(query));
if (a.text.indexOf(query.term) > b.text.indexOf(query.term)) {
return 1;
} else if (a.text.indexOf(query.term) < b.text.indexOf(query.term)) {
return -1;
} else {
return 0;
}
});
}
return results;
}
});
&#13;