Как создать тег в Select2, несмотря на нахождение термина в текущем списке опций - PullRequest
1 голос
/ 05 июня 2019

В Select2 функция createTag() не запускается, когда введенный пользователем текст полностью соответствует одному из параметров.

Итак, если у меня есть следующий сгруппированный список в моем <select> (уведомлениеэта Панама появляется дважды):

- OptionGroup: City
  - Option: Kampala
  - Option: Panama
  - Option: Vienna
- OptionGroup: Country
  - Option: Austria
  - Option: Panama
  - Option: Uganda

Я хочу иметь возможность добавить тег с Panama, чтобы потом можно было искать как по стране, так и по городу.Но функция createTag() даже не вызывается Select2.

Это мой вызов Select2:

$(selector).select2({
    placeholder: "Start typing to filter...",
    allowClear: true,
    tags: true,
    createTag: function (params) {
        var term = $.trim(params.term);

        if (term === '') {
            return null;
        }

        return {
            id: 'text=' + term,
            text: 'Text: "' + term + '"',
            newTag: true // add additional parameters
        }
    }
});

1 Ответ

0 голосов
/ 09 июня 2019

Я нашел способ сделать это, изменив исходный код Select2, файл data/tags.js:

  1. Я добавил логический параметр с именем createTagOnMatch со значением по умолчанию false.
  2. Я проверил, что эта опция не trueish перед возвратом, когда найден соответствующий элемент.

Вы можете найти измененную версию здесь:

https://github.com/jotaelesalinas/select2/tree/develop

и с изменениями в коммите здесь:

https://github.com/jotaelesalinas/select2/commit/7bb6b92f6eaba9e4c8ae66c954ab9732447c464c

Я создал запрос на извлечение в исходном Select2, который ожидает:

https://github.com/select2/select2/pull/5534

...