2015-12-16 3 views
1

Я использую Select2 4.0.1, я использовал ajax, чтобы заполнить результат на основе ввода пользователей, но всякий раз, когда я ищу что-либо select2, не перечисляя никакого результата, я получаю правильный результат в ответе ajax ,Select2 - Результаты не перечислены в раскрывающемся списке с использованием AJAX

также это входная потеря потеря фокуса после ответа ajax.

Это, как я инициализируется ВЫБ.2 -

$('#select_tag_element').select2({ 
     closeOnSelect: false, 
     multiple: true, 
     placeholder: 'Assign a new tag', 
     tags: true, 
     tokenSeparators: [","], 
     ajax: { 
     url: "search_url", 
     dataType: 'json', 
     type: 'GET', 
     delay: 250, 
     data: function (params) { 
      return { 
      search: params.term, 
      page: params.page 
      }; 
     }, 
     processResults: function (data) { 
      console.log(data) 
      return { results: $.map(data, function(item) { 
       return { id: item.id, text: item.name } 
      }) 
      }; 
     }, 
     cache: true 
     } 
    }); 

я получаю ожидаемый JSON Консоль JavaScript.

[Object, Object, Object] 
0: Object 
id: 239 
name: "Tag1" 
__proto__: Object 
1: Object 
id: 255 
name: "Tag2" 
__proto__: Object 
2: Object 
id: 256 
name: "Tag3" 
__proto__: Object 
length: 3 
__proto__: Array[0] 

Любая помощь очень appreciated.Thnx :)

Update -

отлаживать и обнаружил, что загрузить результат в выпадающем списке, но он удаляет результат раскрывающегося списка, когда globalEventContext.trigger("ajaxComplete", [ jqXHR, s ]); выполняется эта строка в jquery.js

if (fireGlobals) { 
    globalEventContext.trigger("ajaxComplete", [ jqXHR, s ]); 
    // Handle the global AJAX counter 
    if (!(--jQuery.active)) { 
    jQuery.event.trigger("ajaxStop"); 
    } 
} 

Как предотвратить результат ниспадающее меню, чтобы закрыть на выше вызывать?

==================================================================================================================================== =================

Update

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

+1

Большое спасибо за это - ваше второе обновление помогло мне - я схожу с ума, пытаясь понять, почему мои результаты пропадают! – Alpaus

ответ

2

я только изменил свой код, это поможет вам

$('#select_tag_element').select2({ 
    closeOnSelect: false, 
    multiple: true, 
    placeholder: 'Assign a new tag', 
    tags: true, 
    tokenSeparators: [","], 
    ajax: { 
    url: "search_url", 
    dataType: 'json', 
    type: 'GET', 
    delay: 250, 
    data: function (params) { 
     return { 
     search: params.term, 
     page: params.page 
     }; 
    }, 
    processResults: function (data) { 
     var newData = []; 
        data.forEach(function (i,item) { 
         newData.push({ 
          id: i.id //id part present in data 
          , text: i.name //string to be displayed 
         }); 
        }); 

      return { 
      results: newData 
      }; 
    }, 
    cache: true 
    }, 
    formatResult: function(data) { 
     return data.name; 
    }, 
    formatSelection: function(data) { 
     return data.id; 
    }, 
    escapeMarkup: function(m) { 
     return m; 
    } 
}); 
+1

Спасибо Muhammad .. но это не будет работать для меня. Я отлаживаю и обнаружил, что он загружает результат в выпадающем списке, но удаляет выпадающее окно с результатом «globalEventContext.trigger (« ajaxComplete », [jqXHR, s]); эта строка выполняется в' jquery.js' –

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