2015-05-20 2 views
0

Документация по выбору уже объясняет, как использовать функцию create: function (input, callback) {....}, чтобы добавить новый элемент в базу данных.selectize.js call href, чтобы добавить новую опцию

В моем случае базовая модель selectbox содержит не только имя параметра, но и другие данные.

P.e .: У меня есть selectbox со странами. Варианты заполняются из модели «Страны», которая содержит «country_name», «top_level», «currency». В поле выбора отображается только «country_name». Если пользователь хочет добавить новую страну, я хочу открыть загрузочный мод, позволить пользователю добавлять новые данные страны, а после сохранения я хочу обновить selectbox с помощью refreshOptions().

Я пытался изменить в selectize.js в строке 741 из

'option_create': function(data, escape) { 
    return '<div class="create">Add <strong>' + escape(data.input) + </strong>&hellip;</div>'; 

в

'option_create': function(data, escape) { 
    return '<a data-toggle="modal" data-keyboard="false" data-backdrop="static" data-target="#modal" href="... some link ...">New country</a>'; 

я могу увидеть ссылку после написания не существующей страны в seletbox, но когда я нажимаю на ничего не происходит.

Как это исправить? Я уже близко, чтобы сдаться :-)

++++++++++++++++++++++++++++++++++ Javascript для удаления опции:

<script type="text/javascript"> 
    $(".chosen-search-94-departID").selectize({ 
     create: true, 
     sortField: {field: 'text'}, 
     onOptionAdd: function (value, $item) { 
      var link='... link ...' + value; 
      load_modal_content (link, '... csrf ...'); 
      $('#modal').modal('show'); 
      $item.selectize.removeOption(value); 
     }, 
    }); 

ответ

0

Может быть чище/проще в использовании onItemAdd (см Usage page), чтобы определить поведение, когда добавляется новый элемент. По-моему, нет необходимости менять selectize.js.

+0

спасибо. Он работал (почти). Но у меня все еще есть проблема: когда пользователь пишет новую опцию, открывается модальный вид - где пользователь должен добавить новые данные для этой опции. Теперь пользователь решает не добавлять новую опцию. Он закрывает модальный вид, но новый вариант по-прежнему можно выбрать. Есть ли способ остановить выбор из автоматического добавления новой опции? Если опция действительно сохранена в базе данных, я бы добавил ее после закрытия модального. – sascha2014

+0

Затем используйте removeItem() (и, возможно, removeOption()), чтобы исключить неполную опцию. – PhiLho

+0

Снятие не работает. Я уверен, что мой код не правильный. Не могли бы вы посмотреть? Я добавил свой код выше. Спасибо! – sascha2014

Смежные вопросы