JQuery Select2 Item not found触发器

JQuery Select2 Item not found trigger

我想为我的 select2 个字段回调。我试图在我的 select2 组件上显示所有项目名称。但是,如果用户只是输入了项目的名称,而该项目不在 select 输入的任何选项下,那么我想弹出一个对话框,通知他们是否要将其添加为新项目。所以我想知道这个函数是否有任何类型的回调。这就是我的想法

$('select').select2({
    onSelect: function(item) {
         if (item == null || $(this).options == 0) {
         // A dialog will prompt saying would you like to add this item?
         }
    }
});

我知道这个语法不正确,但你的想法对吗?我只想知道确定 select2 中的项目类型是否不存在或更好的回调是什么,但我希望在用户输入不在 [=16 上的内容时触发回调=]2个选项。

好的,给你。以下是在某种程度上起作用的 2 个场景:

场景一:

DEMO

仅在单击 newtag

时启用确认提示
$('.select2').select2({
    tags: true,
    tokenSeparators: [",", " "],
    createTag: function (tag) {
        return {
            id: tag.term,
            text: tag.term,
            isNew : true
        };
    }
}).on("select2:select", function(e) {
    if(e.params.data.isNew){
        var r = confirm("do you want to create a tag?");
        if (r == true) {
$(this).find('[value="'+e.params.data.id+'"]').replaceWith('<option selected value="'+e.params.data.id+'">'+e.params.data.text+'</option>');
        }
        else
        {
            $('.select2-selection__choice:last').remove();
            $('.select2-search__field').val(e.params.data.text).focus()
        }
    }

});

场景二:

DEMO

clickspace 的确认,但标签已添加到列表中:

$('.select2').select2({
    tags: true,
    tokenSeparators: [",", " "]
}).on("change", function(e) {
    var isNew = $(this).find('[data-select2-tag="true"]');
    if(isNew.length){
        var r = confirm("do you want to create a tag?");
        if (r == true) {
isNew.replaceWith('<option selected value="'+isNew.val()+'">'+isNew.val()+'</option>');        
        }
        else
        {
            $('.select2-selection__choice:last').remove();
            $('.select2-search__field').val(isNew.val()).focus()
        }
    }
});

You need to find some workaround for tag getting added in false case.