触发器以编程方式选择加载方法

Trigger selectize load method programmatically

本文关键字:加载 方法 选择 方式 编程 触发器      更新时间:2023-09-26

selectize.js.上的又一个简单问题

我有一个独立的用户界面元素(让我们称之为inputA)和一个selectize元素。Selectize元素定义如下:

var test = $('#my_selectize').selectize({
    // ....
    load: function(query, callback) {
            $.ajax({
                url: '/remote_url/',
                type: 'GET',
                data: {q: query},
                error: function() { callback(); },
                success: function(res) {
                    callback(JSON.parse(res.f));
                }
            });
        }
    })[0].selectize;

现在,我希望每次用户编辑输入A时都触发加载方法。为了做到这一点,我根据文档尝试了以下操作:

$('#input_A').on('change', function(){
        test.trigger('load');}

什么也没发生。有什么想法吗?这可能吗?

 $("#inputA").change(function (e) {
         test.onSearchChange($(this).val()); //test = $('#my_selectize')[0].selectize;
 });

有一个方法(onSearchChange)触发Selectize源代码中的"load"事件。我们可以使用此方法在代码后面手动触发加载方法。

这是我的解决方案。我希望它能帮助到别人。

const selectize = elem.selectize({
  //...
  onLoad: () => {
    //if you need to refresh list after changes
    elem[0].selectize.refreshOptions();
  }
});
    
otherElem.change(() => {
  const { selectize } = elem[0];
  const value = elem.find("input").val(); //here I just get selectize input value
    
  delete selectizeElem.loadedSearches[value];
  selectize.onSearchChange(value);
});