使用ajax仅在打开时填充select2

时间:2018-07-10 23:29:47

标签: javascript jquery ajax jquery-select2

我正在使用以下代码从数据库中获取选项,并在打开时填充select2。它工作得很好,但是当我开始在select2搜索输入框中键入内容时,它也会通过相同的ajax函数进行搜索。我如何才能在每次打开时填充它,然后只要打开就将其保留在那里?

此外,由于我使用它来创建标签时,我在附加ajax部分时失去了自动选择新标签的能力,因此,现在无需键入并按Enter即可添加标签,而是将其卡在搜索区域中如果要选择它,我必须手动单击新创建的标签。

有什么想法吗?

function formatMenu (data) {
  if (!data.id) { return data.text; }
  var $data = $(
    '<nobr>' + data.text + '</nobr>'
  );
  return $data;
};

$('select').select2({
    templateSelection: formatMenu,
    dropdownCssClass: 'select2-menu',
    dropdownParent: $('#parent'),
    placeholder: '-',
    tags: true,
    allowClear: true,
    ajax: {
        url: "?ajax=get_data,
        dataType: 'json',
        delay: 250,
        data: function (params) {
         return {
           searchTerm: params.term
         };
        },
        processResults: function (response) {
          return {
             results: response
          };
        },
        cache: false
    },
    sorter: function(data) {
        return data.sort(function (a, b) {
            a = a.text.toLowerCase();
            b = b.text.toLowerCase();
            if (a > b) {
                return 1;
            } else if (a < b) {
                return -1;
            }
            return 0;
        });
    },
    createTag: function (params) {
        return {
            id: params.term,
            text: params.term
        }
    }
});

0 个答案:

没有答案