【问题标题】:Refreshing a selectpicker with data-live-search ignoring text filter使用忽略文本过滤器的数据实时搜索刷新选择器
【发布时间】:2020-06-08 01:20:54
【问题描述】:

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

这是我的做法:

  1. 初始化不带选项的选择器

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

      }
    });
  }
});

我找不到要求选择器根据文本过滤器重新过滤的方法。我是不是做错了什么?

【问题讨论】:

    标签: javascript bootstrap-selectpicker


    【解决方案1】:

    由于我的函数在两次给出相同文本的情况下没有得到任何新结果,因此如果我有一个新结果,我会触发 select-picker 事件的事件输入,从而达到目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-05
      • 2013-02-19
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      相关资源
      最近更新 更多