38
votes

I want add some items to a selectized input after user clicks on a button. The input data are loaded via Ajax. When I call addItem(value) no thing happens. But if I try to type some string in the input it loads data and after this addItem(value) will works.

https://github.com/brianreavis/selectize.js/blob/master/docs/api.md

6
I am having the same issue... addItem does not work at all for me. var $tag_selects=$('#tags').selectize({options}) then tag_select=$tag_selects[0].selectize;tag_select.addItem('test'); but test is never added - Fabrizio
@Fabrizio I found a solution. See the answer. - PHPst

6 Answers

56
votes

This plugin does not attempt to load an item metadata from the server. You need to first add an option using addOption() method. Next, you can use addItem().

v.selectize.addOption({value:13,text:'foo'}); //option can be created manually or loaded using Ajax
v.selectize.addItem(13); 
37
votes

You can add options like this:

var $select = $(document.getElementById('mySelect')).selectize(options);
var selectize = $select[0].selectize;
selectize.addOption({value: 1, text: 'whatever'});
selectize.refreshOptions();

This only adds the option as possible selection. Now you can use addItem to add the new option to the list:

selectize.addItem(1);

This does not need a refresh function. You do not need to use "refreshOptions" if you add the new option immediately.

7
votes

Try this.

 $('.select-ajax-city').each(function() {
    if (this.selectize) {
        for(x=0; x < 10; ++x){
            this.selectize.addOption({value:x, text: x});
        }
    }
});  
7
votes

Try This

var $select = $(document.getElementById('Your-element-id'));
var selectize = $select[0].selectize;
selectize.addOption({value: '2', text: 'test'});
selectize.addItem('2');
1
votes

If you want to be more flexible then you can use the length like this.

var $select = $(document.getElementById('Your-ID'));        
var selectize = $select[0].selectize;
var count = selectize.items.length + 1;
selectize.addOption({ value: count, text: 'value-here' });
selectize.addItem(count);
0
votes
$('#id').selectize({
   create: function(input,callback){
      $.ajax({
           url: "",
           type: "POST",
           data: {value : input},
              success: function(res) {
                   callback({value: res, text: input});
              }
      });
   }
});