如何在 Select2 中不允许删除选项?

Fab*_*oya 1 jquery html-select jquery-select2

我有一个 Select2 插件的多重选择,我想修复某些选项,而其他选项则不是,例如,阿拉斯加加利福尼亚 NO选项可以删除,但是如果该人选择其他选项,例如Hawaii,则可以正常删除它们。

我想知道如何删除某些标签的X以防止它们被取消选择。

图像选择2

Fab*_*oya 6

我发现存在一个选项调用locked,有了这个我可以做到。

只需在选项locked="locked"中添加选项,如下所示:

<option value="NV" data-select2-id="73" locked="locked">Nevada</option>
Run Code Online (Sandbox Code Playgroud)

并准备好了。如果需要,您可以添加开始选择的选项,select如下所示:

<option value="NV" data-select2-id="73" selected locked="locked">Nevada</option>
Run Code Online (Sandbox Code Playgroud)

例如

<option value="NV" data-select2-id="73" locked="locked">Nevada</option>
Run Code Online (Sandbox Code Playgroud)
<option value="NV" data-select2-id="73" selected locked="locked">Nevada</option>
Run Code Online (Sandbox Code Playgroud)
$(function() {
   $('.select2').select2({
   	 tags: true,
     placeholder: 'Select an option',
     templateSelection : function (tag, container){
     		// here we are finding option element of tag and
        // if it has property 'locked' we will add class 'locked-tag' 
        // to be able to style element in select
      	var $option = $('.select2 option[value="'+tag.id+'"]');
        if ($option.attr('locked')){
           $(container).addClass('locked-tag');
           tag.locked = true; 
        }
        return tag.text;
     },
   })
   .on('select2:unselecting', function(e){
   		// before removing tag we check option element of tag and 
      // if it has property 'locked' we will create error to prevent all select2 functionality
       if ($(e.params.args.data.element).attr('locked')) {
           e.preventDefault();
        }
     });
});
Run Code Online (Sandbox Code Playgroud)

jsfiddle 示例是这样的:

https://jsfiddle.net/FabianMontoya97/pch789y6/2/

谢谢大家 :D

这个答案是 Stackoverflow 中试图找到解决方案的不同帖子的汇编。非常感谢。