2015-06-25 112 views
2

我正在使用4.0.0完整版,以便它也支持3.5.2功能。我正在使用query選項填寫結果。一切工作正常,但是當我從結果中選擇一個項目時,它不顯示它。Select2未顯示所選值

$(document).ready(function() { 
 
    $(".select").select2({ 
 
     minimumInputLength: 1, 
 
     query: function (query) { 
 
      if (query.term) { 
 

 
       var data = { results: [] }, i, j, s; 
 
       for (i = 1; i < 5; i++) { 
 
        s = ""; 
 
        for (j = 0; j < i; j++) { s = s + query.term; } 
 
        data.results.push({ id: query.term + i, text: s }); 
 
       } 
 
       query.callback(data); 
 
      } 
 
     } 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-2.1.4.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" /> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.js"></script> 
 

 
<select class="select" style="width:300px"></select>

回答

0

這是受如何適配器被自動生成,引起與選擇二的錯誤。因爲Select2只會自動爲陣列適配器(以及任何構建它們的任何東西,如AJAX)創建一個新的<option>,所以不使用它的任何東西都將無法在運行中生成新的選項。不幸的是,默認query decorator將包裝SelectAdapter,它不是ArrayAdapter的子類。

您可以通過強制使用陣列適配器來解決此問題,方法是傳入一個空數組data

$(document).ready(function() { 
 
    $(".select").select2({ 
 
     minimumInputLength: 1, 
 
     data: [], 
 
     query: function (query) { 
 
      if (query.term) { 
 

 
       var data = { results: [] }, i, j, s; 
 
       for (i = 1; i < 5; i++) { 
 
        s = ""; 
 
        for (j = 0; j < i; j++) { s = s + query.term; } 
 
        data.results.push({ id: query.term + i, text: s }); 
 
       } 
 
       query.callback(data); 
 
      } 
 
     } 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-2.1.4.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" /> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.js"></script> 
 

 
<select class="select" style="width:300px"></select>

should be reported as a bugSelect2 repository

+0

非常感謝 – mahindar