如何在不触发item_add
的情况下selectize.addItem("value")
?
我有一个标签字段,它依赖于另一个选择。每当其他选择发生更改时,我需要自动填充标记,然后每当用户添加或删除标记时,我都需要让监听器运行代码。我不知道如何在不触发item_add
事件的情况下以编程方式添加标签,但我不希望它在用户触摸标签之前触发。
(有addItem(…, silent)
,但除非我弄错了,否则这只会阻止它触发change
事件。)
样本代码:
$('#input-tags').selectize({
onItemAdd: function() {
alert("This should only appear by user action");
}
});
$tags = $('#input-tags')[0].selectize;
$tags.addItem("awesome");
$tags.addItem("neat");
JSFiddle
一个解决方案(也是我所知道的唯一一个)是在addItem
之前删除事件侦听器,然后再添加它们。然而,这似乎并不理想,尤其是如果需要多次这样做的话。
添加所有初始值后,您可以转换代码以注册添加回调:
$('#input-tags').selectize();
$tags = $('#input-tags')[0].selectize;
$tags.addItem("awesome");
$tags.addItem("neat");
// Register the listener once you have initialized the selectize component.
$tags.on('item_add', function() {
alert("This should only appear by user action");
});