2016-09-30 2 views
0

У меня есть всплывающий всплывающий ботстрап, который заполняется через AJAX. В то время как я получаю значение от AJAX, я не могу заполнить раскрывающийся список мультиселектов. У меня есть еще один нормальный раскрывающийся список, который использует ту же функцию AJAX, и он заселен. Я что-то упускаю?Bootstrap multiselect не заполняется

я проверить эту ссылку, которая не работает для меня Adding form elements dynamically to Bootstrap multiselect library

Это HTML-

var lstValue = ""; 
<select id='sellstValue" + obj.id + "' class='lstvalue' hidden='hidden'>" + lstValue + "</select> 

Это мой AJAX код

var lstvalue = $('#' + rowId).find('.lstvalue').prop('id'); 
$.ajax({ 
      cache: false, 
      url: '@Url.Action("PopulateDropdown", "AdvancedSearch")', 
      type: "POST", 
      data: { Field: field } 
      }).done(function (data) { 
      console.log(data.value) 
      var listb = $('#' + lstvalue); 
      listb.empty(); 

      $.each(data.value, function (index, value) { 
      listb.append($('<option>', { 
       value: value, 
       text: value 
        }, '<option/>')) 
       }); 
      console.log($('#' + lstvalue)) 
      }); 

      $('#' + lstvalue).attr('multiple', 'multiple'); 
      $('#' + lstvalue).multiselect(); 

Я проверил консольный вывод консоли .log ($ ('#' + lstvalue)), который дает мне ожидаемый результат.

ответ

1

Я не уверен, почему это сработало, но добавление «async: false» в мой вызов AJAX помогло решить проблему.

+0

Вы не запускаете действия по обратному вызову, и природа AJAX должна выполняться асинхронно, поэтому вы обычно связываете действия с обратным вызовом успеха или методом .done, что полезно, потому что вы также можете показывать ошибки при сбое транзакции AJAX. –

+0

multiselect() не может помещать в цикл, это функция синхронизации, которая вызывает события обработчика. – WeiYuan

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