使用数据实时搜索忽略文本过滤器刷新选择器

Refreshing a selectpicker with data-live-search ignoring text filter

我有一个很重的倍数 select,因此我目前正在为一个 select 选择器倍数添加选项,在用户输入时通过 Ajax 进行数据实时搜索。 刷新正确地更新了选项,但不幸的是它也忽略了当前的数据实时搜索文本。

这是我的做法:

  1. 初始化 select没有选项的选择器

  2. 当用户输入时,我动态添加一个选项然后使用刷新方法(正常工作)

  3. 如果用户用其他内容替换他的文本,它将动态添加其他选项,但也会显示第一个选项(与用户文本过滤器无关)

$('#special_selectpicker').parent().find('input.form-control').on('input', function() {
  if ( $(this).val().length >= 3 ){
    $.ajax({
      url: "/get_objects/json/app_name/item",
      data: {
        filters: JSON.stringify([
            {
              column: "name__icontains",
              value: $(this).val()
            }
          ]),
        fields: JSON.stringify(['uppercase_name'])
      },
      success: function (result) {
        item_added = false
        json_result = JSON.parse(result)

        for ( const id in json_result['results'] ){
          item = json_result['results'][id]
          if( !option_cities.includes(item['pk']) ){
            option_cities.push(item['pk'])
            $("#special_selectpicker").append('<option value="' + item['pk'] + '">' + item['uppercase_name'] + '</option>')
            item_added = true
          }

        }

        if( item_added ){
          $('#special_selectpicker').selectpicker('refresh');
        }

      }
    });
  }
});

我找不到让 selectpicker 根据文本过滤器重新过滤的方法。我做错了什么吗?

因为我的函数没有得到任何新的结果,两次给出相同的文本,如果我有一个新的结果,我触发了 select-picker 事件的事件输入,它起到了作用。