Select2 - 在单选模式下添加自定义选项(标签:false)

时间:2015-05-22 19:00:34

标签: jquery-select2-4

是否可以设置select2控件以接受自定义选项 在单选模式下(标签:false)?

在搜索框中输入您的选择时,而不是看到“找不到结果”, 只需查看您输入的内容,然后通过单击或按Enter键选择它。

1 个答案:

答案 0 :(得分:1)

好吧 - 我终于找到了解决方案。 每次输入时,我都会覆盖原始的SelectAdapter添加新选项 并删除以前的临时选择:

$.fn.select2.amd.require(['select2/data/select', 'select2/utils'],
function (SelectAdapter, Utils) {
function XSelectAdapter($element, options) {
    XSelectAdapter.__super__.constructor.call(this, $element, options);
}

Utils.Extend(XSelectAdapter, SelectAdapter);

XSelectAdapter.prototype.query = function (params, callback) {
    var data = [];
    var self = this;
    var $options = this.$element.children();
    var have_exact_match = false;

    $options.each(function () {
        var $option = $(this);
        if (!$option.is('option') && !$option.is('optgroup')) {
            return;
        }
        var option = self.item($option);

        if (option.xtemp === true) {
            $(this).remove(); // previously typed-in choice - delete
            return;
        }
        if (option.term === params.term) {
            have_exact_match = true; // will not choice if have exact match
        }

        var matches = self.matches(params, option);
        if (matches !== null) {
            data.push(matches);
        }
    });

    if (!have_exact_match) {
        self.addOptions(this.option({selected: false, id: params.term, text: params.term, xtemp: true}));
        data.push({selected: false, id: params.term, text: params.term});
    }

    callback({
        results: data
    });
    };

    $('#your_select2').select2({dataAdapter:XSelectAdapter});
});