Jquery 选择2向列表中添加新值

Jquery 选择2向列表中添加新值,jquery,jquery-select2,Jquery,Jquery Select2,我读过很多关于这个选项的帖子:在select2列表中添加一个新值,但我所做的一切都不起作用。这是我的密码: $('#profession').select2({ tags: true, minimumInputLength: 1, placeholder: 'Search for a profession', createSearchChoice: function (term, data) { if ($(data).filter(functio

我读过很多关于这个选项的帖子:在select2列表中添加一个新值,但我所做的一切都不起作用。这是我的密码:

$('#profession').select2({
    tags: true,
    minimumInputLength: 1,
    placeholder: 'Search for a profession',
    createSearchChoice: function (term, data) {
        if ($(data).filter(function () {
            return this.text.localeCompare(term) === 0;
        }).length === 0) {
            return { id: term, text: term };
        }
    },
    createTag: function (params) {
        return {
            id: params.term,
            text: params.term,
            newOption: true
        }
    },
    templateResult: function (data) {
        var $result = $("<span></span>");

        $result.text(data.text);

        if (data.newOption) {
            $result.append(" <em>(new)</em>");
        }

        return $result;
    },
    ajax: {
        url: root_url + "profession/listProfession",
        type: "post",
        dataType: 'json',
        delay: 250,
        data: function (params) {
            return {
                q: params.term
            };
        },
        results: function (data, page) {  return { results: data.results} },
        processResults: function (data, page) {
            return {
                results: data
            };
        },
        cache: true
    }
});
当我输入Plu时,选择2显示管道工,我可以添加管道工1234,例如,但如果我输入BLABLA,我没有以BLA开头的职业,我不能添加BLABLA值。我不明白为什么。select2字段处于引导模式,我退出了le tabindex属性

谢谢

编辑1:

我试图退出阿贾克斯的角色。如果没有ajax,我可以键入一个值并选择它。但是我从ajax加载数据。代码如下:

$('#profession').select2({
    tags: true,
    createTag: function (params) {
        return {
            id: params.term,
            text: params.term,
            newOption: true
        }
    },
    templateResult: function (data) {
        var $result = $("<span></span>");

        $result.text(data.text);

        if (data.newOption) {
            $result.append(" <em>(new)</em>");
        }

        return $result;
    }
});

我怎样才能把这两个代码混合在一起呢?

好的,我这样解决了我的问题:

<select class="form-control" name="profession" id="profession" style="width:100%">
<?php foreach ($listProfession as $lp): ?>
     <option value="<?= $lp['profession_name']; ?>"><?= $lp['profession_name']; ?></option>
<?php endforeach; ?>
</select>
当我提交表格时,我会检查我的数据库,如果这个职业存在,如果没有,我会将它添加到数据库中


解决了

有人想知道答案吗?我可以添加一些信息来帮助您吗?
// Initialisation du champ profession
$('#profession').select2({
    tags: true
});