我正在使用selectize并进行了设置,以便用户只能从一组选项中选择一个,如果愿意,他也可以进行新的输入。我要这样做,以便如果用户选择一个选项,则输入项将得到一个类,该类将为其设置样式,因为当启用多个选项时,selectize会为所选项设置样式。
但是,如果用户输入自己的输入,则输入将不会具有样式,因此输入的输入和选定的输入将有所不同。但是我不确定该怎么做?
这是我的脚本:
$('#engagement_question').selectize({
persist: false,
maxItems: 1,
options: items,
labelField: "item",
valueField: "item",
sortField: 'item',
searchField: 'item',
create: true,
render: {
option_create: function(data, escape) {
return '<div class="create">Nytt inlegg<strong> ' + escape(data.input) + '</strong>…</div>';
}
},
});
我已经尝试过使用事件api,但是没有运气:
var addItemClass = function() {
console.log('entered');
$('.item').addClass( "item-background" );
};
var removeItemClass = function() {
console.log('entered');
$('.item').removeClass( "item-background" );
};
var selectize = $select[0].selectize;
selectize.on('item_add', addItemClass);
selectize.on('option_add', removeItemClass);
想法是添加一个类,如果从选项中选择了该类,它将为输入提供背景,如果输入是新的,则将其删除。但是当它进入功能时removeItemClass
,它也立即进入addItemClass
功能。我该如何制止呢?
更新
最后,我用它来使它按我想要的方式工作:
onChange: function(value) {
var unique = true;
for(var i = 0; i < items.length; i++) {
if(items[i].item == value) {
unique = false;
break;
}
}
if(value.length > 0 && unique) {
$question.next('.selectize-control').find('.selectize-input').addClass('user-created');
}
},
removeItemClass
是从内部开除的selectize.js
。在这里,我们检查,如果最后.item text
没有在现有元素匹配items array
比background-image
这是一个gradient
设置为none
和我们的item-background
类应用
JS:
var items = [
{ id: 1, item: 'Spectrometer' },
{ id: 2, item: 'Star Chart' },
{ id: 3, item: 'Electrical Tape' }
];
var $select = $('#engagement_question').selectize({
persist: false,
maxItems: 3,
options: items,
labelField: "item",
valueField: "item",
sortField: 'item',
searchField: 'item',
create: true,
render: {
option_create: function (data, escape) {
return '<div class="create">Nytt inlegg<strong> ' + escape(data.input) + '</strong>…</div>';
}
},
});
var addItemClass = function () {
console.log('entered1');
var input = $.map(items, function (element, index) {
if (element.item == $('.item:last').text())
return element;
else
return null;
});
if (input.length == 0)
{
$('.item:last').css('background-image', 'none');
}
$('.item:last').addClass("item-background");
};
var removeItemClass = function () {
console.log('entered2');
$('.item:last').removeClass("item-background");
//$('.item').css('background-image', 'none');
};
var selectize = $select[0].selectize;
selectize.on('item_add', addItemClass);
selectize.on('option_add', removeItemClass);
的CSS
.item-background {
background-color:#000!important;
}
的HTML
<select id="engagement_question" multiple>
</select>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句