选择禁用筛选器

Selectize disable sifter

我正在尝试实现 selectize javascript 库。它有效,但我的问题是如何禁用 sifter 选项。问题是默认 sifter 选项是启用的,如果我在选项中有像 Asset 这样的词,它会被过滤成 et.

我尝试了以下但不起作用:

score: function () {
    return function () {
        return 1
    }
}

Selectize 非常依赖 sifter,我没有看到禁用它的简单方法,我认为如果你这样做,你会摆脱大部分(也许是整个)selectize 搜索功能。

sifter在它的最后一个版本中有一个配置选项可以帮助你实现你想要的,配置选项是respect_word_boundaries:

If true, matches only at start of word boundaries (e.g. the beginning of words, instead of matching the middle of words)

问题是 selectize 没有使用最新版本,所以你必须使用 selectize 的非全部捆绑版本,称为“默认”。

确保您使用的是 sifter 版本 0.6.0

我尝试使用 selectize 上的插件进行一些调整以使其正常工作。检查以下结果:

Selectize.define('change_search', function(options) {
  var self = this;
  this.getSearchOptions = (function() {
    var original = self.getSearchOptions();
    return function() {
      original['respect_word_boundaries'] = true;
      return original;
    };
  })();
});


$(document).ready(function() {
  $('#search').selectize({
    plugins: ['change_search']
  });
});
.search {
  width: 300px;
  margin: 10px;
  display: block;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/css/selectize.default.css" rel="stylesheet" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/microplugin/0.0.3/microplugin.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sifter/0.6.0/sifter.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/js/selectize.min.js"></script>

<div class='search'>
  <select placeholder="Choose one option..." id="search" multiple="multiple">
    <option value="asset">Asset</option>
    <option value="etc">Etcetera</option>
    <option value="etymology">Etymology</option>
    <option value="yet">Yet</option>
  </select>
</div>