根据搜索查询更改远程 url

Change remote url based on search query

我有一个 select2 字段,它正在从远程 api 检索数据。我可以让它工作。我想做的是根据用户输入的内容更改遥控器 url。例如,如果键入的前两个字母是 "AA",则使用 url 进行搜索,当前两个字符为“88”时,则使用另一个 url.

进行搜索

到目前为止,这是我的代码:

this.selector.select2({
     minimumInputLength: 2,
     ajax: {
         url: function(param){return 'http://localhost:3000/suggestions?&'},
         dataType: 'json' ,
         data: function (params) {


      var query = {
       search: params.term,
      }
      return query;
    },
          processResults: function(data) {
            var results = []; 
            $.each(data, function (index, search) {
                 results.push({
                     id: search.id,
                     text: search.val
                 });
             });

             return {
              "results":results
             };                            
         },

     },

     width: 'resolve',
  }); 

我已经看过但找不到在键入(搜索)时触发的事件。

根据 docs 传递给 url 回调的 params 参数与数据回调中的相同。因此,您可以将代码重写为:

this.selector.select2({
  minimumInputLength: 2,
  ajax: {
    url: function (params) {
      var firstTwoLetters = params.term.slice(0, 2);
      if (firstTwoLetters == '88') {
        return 'some url';
      } else if (firstTwoLetters == 'AA') {
        return 'another url'
      } else {
        return 'http://localhost:3000/suggestions?&'
      }
    },
    dataType: 'json',
    data: function (params) {
      var query = {
        search: params.term,
      }
      return query;
    },
    processResults: function (data) {
      var results = [];
      $.each(data, function (index, search) {
        results.push({
          id: search.id,
          text: search.val
        });
      });

      return {
        "results": results
      };
    },

  },

  width: 'resolve',
});

希望我正确理解了您最后的请求。

oninput 事件在您键入时发生。

注意:我宁愿评论它而不使用 Answer,但是,我的代表少于 50。