2015-04-13 14 views
9

Điều này có vẻ giống như một điều tiêu chuẩn muốn làm, nhưng tôi đang đấu tranh để tìm một giải pháp rõ ràng và đơn giản.Thêm tùy chọn vào Select2 sau khi inititialzation

Tôi muốn có thể thêm một hoặc nhiều tùy chọn bổ sung vào Select2 đã được khởi tạo.

Tôi đang sử dụng phiên bản cũ hơn của Select2, không chắc chắn phiên bản nào là ngoại tuyến.

Trả lời

9

Thiên Chúa tôi nên dừng lại để suy nghĩ trước khi đăng bài đôi khi.

của nó đơn giản như chỉ cần thêm một lựa chọn mới cho chọn cơ bản:

$("#myselect").append($('<option>', {value: 1, text: 'new option'})); 

Thậm chí không cần phải tái khởi tạo select2.

21

Bạn có thể giải quyết hầu hết các câu hỏi liên quan đến Select2 giống như cách chúng sẽ được giải quyết theo tiêu chuẩn <select>. Trong trường hợp này, câu hỏi <select> tương ứng sẽ là: Adding options to select with javascript.

var option = new Option("text", "id"); 
$("select").append(option); 

Nếu bạn muốn nó được chọn khi được chèn, bạn chỉ có thể đặt thuộc tính selected trên tùy chọn mới.

var option = new Option("text", "id"); 
option.selected = true; 

$("select").append(option); 
$("select").trigger("change"); 

Lưu ý rằng tôi cũng đã kích hoạt sự kiện change để Select2 có thể biết rằng các tùy chọn đã chọn đã thay đổi.

+0

Kevin, tôi đã nêu ra một câu hỏi cho Select2. có vẻ như bạn có trải nghiệm tốt trong đó và bạn có thể giải quyết vấn đề. Tôi đã thử nhiều lần nhưng nó không hoạt động. Nếu có thể bạn hãy nhìn vào cái này. http://stackoverflow.com/questions/35729864/jquery-select2-selected-value-from-database-by-ajax – Ironic

1

Tôi đã giải quyết vấn đề này với thuộc tính "Dữ liệu" của select2. Thứ nhất, tôi nhận dữ liệu với json và sau đó tôi tạo phần tử select2 với mảng của tôi như dưới đây.

corrCodeArray là mảng json của tôi.

function fillSelectReportPeriod() { 
var corrCodeArray = retrieveCorrCodes(); 
$(".js-example-basic-multiple").select2({ 
    maximumSelectionLength: 4, 
    data: corrCodeArray 
});  

}

Lưu ý: Khi tôi cho biết tên nguyên tố Select2 như $("#selectReportPeriod") thay vì $(".js-example-basic-multiple") nó đã không làm việc vì vậy tôi sử dụng tên lớp.

0

này làm việc cho tôi:

$("#company_dealer").val('Newly Selected Dealer').trigger('change'); 
+0

Điều này không trả lời được câu hỏi –

Các vấn đề liên quan