【问题标题】:how to make select2 search start alphabetical?如何使 select2 搜索按字母顺序开始?
【发布时间】:2015-09-12 17:55:29
【问题描述】:

我在我的文章跟踪应用程序中使用 select2 进行标签搜索,我注意到当你开始输入“m”、“mi”时,你会认为“迁移”会首先突出显示,但它以任何开头有'm',就像表格一样。如图所示,“表格”首先出现,搜索越多,就越烦人。

如果您键入“mi”,我希望任何以“mi”开头的内容都会首先出现,而不是包含带有 m 和 i 的“forms-middle”之类的内容。如何根据拼写正确制作 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;
        }
    });
});

【问题讨论】:

标签: javascript jquery jquery-select2


【解决方案1】:

您可以对结果进行排序,请查看documentation here。根据查询的字符串索引排序。您可以使用 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>

【讨论】:

  • 如果你要直接从文档中复制粘贴代码,至少要链接到它。
  • 他们很明显使用的是新版本的 Select2,这只适用于旧版本。
  • 是的,我是 4.0.0。我找到了我想要的,自定义匹配器,我将不得不更慢地浏览,我正在寻找诸如 order、sort 或 alpha 之类的东西。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-12-20
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 2013-08-19
相关资源
最近更新 更多