Использование функции createSearchChoice Select2

Я пытаюсь использовать функцию createSearchChoice, чтобы позволить пользователям вводить свой собственный выбор, когда списка по умолчанию недостаточно. Когда я пытаюсь использовать эту функцию для элемента <select>, я получаю следующую ошибку:

Error: Error: Option 'createSearchChoice' is not allowed for Select2 when attached to a <select> element.

Вместо этого я попытался использовать элемент <input type='hidden'>, но теперь получаю следующую ошибку:

Error: uncaught exception: query function not defined for Select2 'MyInputName'

Я бы предпочел использовать элемент select, чтобы оставаться в соответствии с существующим кодом (нужна возможность выбора нескольких параметров), но мне просто нужна возможность для пользователей вводить свой собственный вариант в дополнение к выбору из предыдущего списка.


person jrrdnx    schedule 26.07.2012    source источник
comment
Не могли бы вы опубликовать свой код html и javascript, который его подключает?   -  person Prescott    schedule 29.07.2012
comment
Похоже, вам нужно использовать скрытый, но вы можете установить параметры в подключении данных data: ...   -  person Prescott    schedule 29.07.2012


Ответы (2)


О Боже, как мне отменить эту награду. Я запаниковал и благодаря панике смог ответить на то, что мы оба искали:

Вы не можете использовать createSearchChoice на select. Таким образом, вы должны использовать input вместо этого.

<input type="hidden" id="category">

Исправление заключается в использовании параметра query:

$("#category").select2({query:function(query){
  var data = {results: []};
  data.results.push({text: query.term});
  query.callback(data);
}});

Что это делает, так это добавляет текущий термин к параметрам, если его там нет. Вы можете заполнить объект results следующим образом:

var data = {results: [{text:'math'},{text:'science'}]};

Это решило мою проблему, поэтому я надеюсь, что это решило вашу. Я думаю, нам следует подробнее ознакомиться с документацией.

person Jürgen Paul    schedule 29.07.2012
comment
Ой, я так надеялся на какую-нибудь награду! Хотя рад, что ты это понял. - person Prescott; 31.07.2012
comment
Оказывается, параметр запроса не требуется, но параметр данных должен находиться в том же конструкторе. Ввод формы добавлялся на мою страницу с классом, специфичным для используемой мной структуры, и включал один конструктор с параметром данных, и я пытался добавить createSearchChoice в отдельный конструктор, уникальный для страницы. Немного настройки и теперь все работает. Извините за задержку ответа. Ваш ответ заставил меня двигаться в правильном направлении, поэтому, пожалуйста, сохраните свою награду. :) - person jrrdnx; 03.08.2012
comment
@jrrdnx Не могли бы вы опубликовать часть своего кода, касающуюся параметров запроса и данных? - person RailinginDFW; 28.03.2013
comment
используя ввод, он портит проверку Jquery. он не прокручивается до нужного элемента. Можете ли вы помочь мне? - person A.J.; 18.03.2014
comment
Можете ли вы предоставить полный код в jsfiddle? Куда идет скрытый ввод - прямо перед вашим выбором? - person oneiros; 18.09.2014

У меня была эта проблема, и это было связано с двойным вызовом select2 в одном и том же поле.

person Jeff Dickey    schedule 05.04.2013