jquery multiselct プラグインを使用しています https://plugins.jquery.com/multi-select/
あるシナリオでは、いくつかのデフォルト値を選択し、それらを無効にして誰も削除できないようにする必要があります.以下は、いくつかの条件に基づいていくつかのオプションを選択した私のコードです.
$('#members_select3').find('option').remove().end()
$.each(response.results, function (i, item) {
$('#members_select3').append($('<option>', {
selected: function(){
if (**condition comes here**){
return true;
},
value: item.uid,
text : item.contact,
}));
});
enable_multi_select_search('members_select3');
ドキュメントに従って、上記のコードで無効化オプションを使用すると、オプションは無効になりますが、選択されていません。これは、デフォルトで選択されているのではなく、オプションが選択可能であることを意味します。
$('#members_select3').find('option').remove().end()
$.each(response.results, function (i, item) {
$('#members_select3').append($('<option>', {
selected: function(){
if (**condition comes here**){
return true;
}
},
value: item.uid,
text : item.contact,
disabled: function(){
if (**condition comes here**){
return true;
}
}
}));
});
enable_multi_select_search('members_select3');
プラグイン n のデフォルト機能
function enable_multi_select_search(id_){
// refresh previous multi select box
$('#members_select3').multiSelect("destroy");
// create new
$('#'+id_).multiSelect({
selectableHeader: "<input type='text' class='form-control search-input' autocomplete='off' placeholder='search...'>",
selectionHeader: "<input type='text' class='form-control search-input' autocomplete='off' placeholder='search...'>",
afterInit: function (ms) {
var that = this,
$selectableSearch = that.$selectableUl.prev(),
$selectionSearch = that.$selectionUl.prev(),
selectableSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selectable:not(.ms-selected)',
selectionSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selection.ms-selected';
that.qs1 = $selectableSearch.quicksearch(selectableSearchString)
.on('keydown', function (e) {
if (e.which === 40) {
that.$selectableUl.focus();
return false;
}
});
that.qs2 = $selectionSearch.quicksearch(selectionSearchString)
.on('keydown', function (e) {
if (e.which == 40) {
that.$selectionUl.focus();
return false;
}
});
},
afterSelect: function () {
this.qs1.cache();
this.qs2.cache();
},
afterDeselect: function () {
this.qs1.cache();
this.qs2.cache();
}
});
}