Fab*_*oya 1 jquery html-select jquery-select2
我有一个 Select2 插件的多重选择,我想修复某些选项,而其他选项则不是,例如,阿拉斯加和加利福尼亚 NO选项可以删除,但是如果该人选择其他选项,例如Hawaii,则可以正常删除它们。
我想知道如何删除某些标签的X以防止它们被取消选择。
我发现存在一个选项调用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 中试图找到解决方案的不同帖子的汇编。非常感谢。