输入搜索文本时,Select2未过滤

时间:2018-01-24 02:07:23

标签: javascript jquery jquery-select2

我已将select2升级到版本4.当我打开select2并输入搜索文本时,列表会根据我输入的内容进行过滤。

这是HTML

<select style="width: 100%;" id="fruit" multiple required>
     <option value="1">Apple</option>
     <option value="2">Pear</option>
     <option value="3">Watermelon</option>
     <option value="4">Melon</option>
     <option value="5">Pineapple</option>
     <option value="6">Orange</option>
     <option value="7">Kiwi</option>
     <option value="8">Banana</option>
     <option value="9">Papaya</option>
     <option value="10">Tangerine</option>
 </select>

这是针对JS

$(document).on('ready', function() {
    function matchCustom(params, data) {
        if ($.trim(params.term) === '') {
          return data;
        }
        if (typeof data.text === 'undefined') {
          return null;
        }
        var terms = params.term.split(" ");
        for (var i=0; i < terms.length; i++){
            if (data.text.toLowerCase().indexOf(terms[i].toLowerCase()) === -1) {
                return null;
            }
        }
        return data;
    }
    $('select').select2({
        matcher: matchCustom,
        closeOnSelect: false,
        multiple: true
    });
    var last_search = '';
    $('select').on('select2:open', function () {
        if (last_search != "") {
            $('#fruit').select2('search', last_search);
            $('.select2-search__field').val(last_search);
        }
    });
    $(document).on('keyup', '.select2-search__field', function () {
        var text = $('.select2-search__field').val();
        last_search = text;
    });
});

初始显示

initial display

当我输入时,这就是设计

search

在我选择了我想要的内容后,列表仍处于打开状态,搜索文本不会消失。这不是一个问题。但是,当我点击另一个地方(导致我的select2列表消失)并再次点击select2字段时,就会发生这种情况。

image1

最后一个搜索值是“ap”。该列表仅包含单词中具有“ap”的值。但是,搜索文本存在。 “ap”值未按预期显示在搜索文本中。此代码$('.select2-search__field').val(last_search);无法按预期工作。

我还尝试删除位于select2 open事件内的代码$('#fruit').select2('search', last_search);。当我第二次打开select2字段时,我遇到了另一个问题。

image2

“ap”值是关闭select2列表之前的最后一次搜索。当我重新打开时,“ap”值显示在搜索文本中是正确的。但是,列表不会根据我搜索的内容进行过滤。

重新打开select2字段后,我想要的结果是搜索值显示列表仅过滤我搜索的内容。我一直在寻找这个好几个小时。有什么我想念的吗?

0 个答案:

没有答案
相关问题