Использование Selectize API для не множественных полей выбора

#javascript #jquery #selectize.js #plunker

#javascript #jquery #selectize.js #plunker

Вопрос:

У меня есть простая настройка выбора, в которой я пытаюсь использовать ее getOption и addOption методы.

 <select id="select">
  <option value="0">Thomas Edison</option>
  <option value="1">Nikola</option>
  <option value="3">Nikola Tesla</option>
  <option value="2">Arnold Schwarzenegger</option>
</select>
<button id="get-option">Get option</button>
<button id="add-option">Add option</button>
 

Я написал несколько JS для вызова методов в моем экземпляре selectize:

 jQuery(function() {
  var selectize = $('#select').selectize()[0].selectize;

  $('#add-option').on('click', function() {
    selectize.addOption({ text: 'Peter Pan' });
  });

  $('#get-option').on('click', function() {
    console.log('Get option:', selectize.getOption(2)[0]);
  });
});
 

К сожалению, addOption функция, похоже, не добавляет опцию в поле выбора. Что еще хуже, getOption вызов просто возвращается undefined . Кроме того, если я добавлю multiple в <select> тег, оба вызова API будут работать должным образом.

Я создал плунжер, показывающий проблему.

Что я делаю не так?

Ответ №1:

Когда у вас есть выбор, который не является множественным, вы используете selectize.getValue() для извлечения текущего значения.

И чтобы добавить опцию, вы должны предоставить свойство value для опции, и вы предоставляли только свойство text.

Так что, если вы просто пытаетесь получить выбранное значение, используйте:

 jQuery(function() {
  var selectize = $('#select').selectize()[0].selectize;

  $('#add-option').on('click', function() {
    selectize.addOption({ value: 99, text: 'Peter Pan' });
  });

  $('#get-option').on('click', function() {
    console.log('Get option:', selectize.getValue());
  });
});
 

Но в вашем примере попытка получить параметр со значением 2 кажется избыточной; вы знаете, что значение равно 2. Если вы можете подробнее объяснить, чего вы пытаетесь достичь, возможно, я смогу помочь дальше.

Документы могли бы быть более понятными, но все это есть. https://github.com/brianreavis/selectize.js/blob/master/docs/api.md#methods_options

Комментарии:

1. Спасибо за помощь. Во втором примере я пытался получить текст параметра со значением 2. Что касается документов, я обнаружил, что, хотя описания методов были в порядке, не было объяснения различий между value , option и item . Возможно, различия будут очевидны для большинства людей.