如何使 select2 搜索按字母顺序开始?

how to make select2 search start alphabetical?

我在我的文章跟踪应用程序中使用 select2 进行标签搜索,我注意到当您开始输入 "m"、"mi" 时,您会认为 'migrations' 会突出显示首先,而是它以具有 'm' 的任何内容开头,例如表单。如图所示,'forms' 最先出现,越搜索越烦人。

如果您键入 'mi',我希望首先出现以 'mi' 开头的任何内容,而不是它会包括诸如 'forms-middle' 之类的具有 m 和 i 的内容。如何根据拼写正确制作 select2 查找标签?谢谢

原样的答案由于某种原因不起作用,文档中也没有提供默认答案:

<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;
        }
    });
});

您可以对结果进行排序,请检查 documentation here. Sort based on the queried string index. You can use javascript build in sort() 方法对结果数组进行排序。

$("#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;
  }
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2-bootstrap.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2.js"></script>
<select id="e1">
  <option value="AL">Alabama</option>
  <option value="WY">Wyoming</option>
  <option value="WY">sdsd</option>
  <option value="WY">aasd</option>
  <option value="WY">aaas</option>
  <option value="WY">qwer</option>
  <option value="WY">sqwqw</option>
  <option value="WY">cxncmx</option>
  <option value="WY">snamsnam</option>
</select>