Создание одного или нескольких новых тегов в выпадающем поле select2 - PullRequest
1 голос
/ 06 февраля 2020

Я использовал библиотеку select2 для выпадающего поля и для создания нового тега - опция «createTag», код выглядит так -

    function create_tag_custom (params) {
            var term = $.trim(params.term);
            var term_id = term;
            if (term === '') {
              return null;
            }
            $.ajax ({
                'delay': 250,
                'async': false,
                'type': 'GET',
                'url': "{% url 'my_url' %}",
                'data': {'q': term},
                'success': function(data) {
                    if (data["result"]) {
                        term_id = '' + data['result'][0] + '_';
                        term = '' + data['result'][1];
                    }
                }
            });
            return {
                id: term_id,
                text: term,
                newTag: true
            }
        }
    $('#id_smart_source').select2({
        width: "100%",
        allowClear: true,
        placeholder: "Select a prefix",
        tags: true,
        multiple: true,
        createTag: create_tag_custom,
        tokenSeparators: [',',';'," ", ", "],
    });

и все работает правильно, новый тег один создан в выпадающем списке. Но я хочу создать один тег или несколько тегов одновременно. Чтобы код мог работать так, например, -

function create_tag_custom (params) {
        var term = $.trim(params.term);
        var term_id = term;
        if (term === '') {
          return null;
        }
        var results = null;
        $.ajax ({
            'delay': 250,
            'async': false,
            'type': 'GET',
            'url': "{% url 'my_url' %}",
            'data': {'q': term},
            'success': function(data) {
                if (data["result"]) {
                    results = $.map(data, function (item) {
                        return {
                            text: item[0],
                            id: item[0]
                        }
                    })
                } else {
                    results = {
                        id: term_id,
                        text: term,
                        newTag: true
                    }
                }
            }
        });
        return results
    }

Может ли select2 вернуть один или несколько новых тегов?

...