2012-01-23 7 views
71

Tôi đang cố gắng thay đổi tùy chọn hiện được chọn trong một lựa chọn với plugin Đã chọn.Thay đổi lựa chọn trong một lựa chọn với plugin được chọn

documentation bao gồm việc cập nhật danh sách và kích hoạt sự kiện khi tùy chọn được chọn, nhưng không có gì (tôi có thể thấy) thay đổi bên ngoài giá trị hiện được chọn.

Tôi đã thực hiện một jsFiddle to demonstrate the code và cách tôi đã cố gắng thay đổi các lựa chọn:

$('button').click(function() { 
    $('select').val(2); 
    $('select').chosen().val(2); 
    $('select').chosen().select(2); 
}); 
+0

tôi không thể chạy các cuộc biểu tình jsfiddle bạn cung cấp. bạn có thể vui lòng cập nhật nó không. – Lucky

+0

OK. Lý do tôi không thể chạy trình diễn của bạn là thư viện được chọn đã trỏ đến một url không chính xác. Dưới đây là cập nhật [jsfiddle] (http://jsfiddle.net/queZ6/666/) – Lucky

Trả lời

165

Từ "Cập nhật Chosen động" trong docs: Bạn cần phải kích hoạt các 'chọn: cập nhật' sự kiện trên lĩnh vực

$(document).ready(function() { 

    $('select').chosen(); 

    $('button').click(function() { 
     $('select').val(2); 
     $('select').trigger("chosen:updated"); 
    }); 

}); 

Chú ý: các phiên bản trước 1.0 sử dụng như sau:

$('select').trigger("liszt:updated"); 
+5

FYI: chúng đã cập nhật thành 1.0 mà bây giờ sử dụng 'đã chọn: cập nhật' thay vì' liszt: updated' – Henesnarfel

+0

Cảm ơn Henesnarfel, đã cập nhật lên phản ánh phiên bản mới. –

+0

Tôi vấp ngã ở đây vì tôi đang cố gắng tìm cách chọn tùy chọn phù hợp nhất hiện tại từ danh sách kết quả tìm kiếm được chọn nhiều lựa chọn (bất cứ khi nào tiêu điểm bị mất). Đây là [một câu chuyện ngắn] (http://jsfiddle.net/zFBCy/4/) về những khám phá của tôi. Bạn không cần phải kích hoạt bất kỳ sự kiện nào. Có lẽ, nó được sử dụng cho người khác quá ... :) – Timo

19

Câu trả lời của tôi là muộn, nhưng tôi muốn thêm một số thông tin bị mất trong tất cả các câu trả lời ở trên.

1) Nếu bạn muốn chọn giá trị đơn trong lựa chọn đã chọn.

$('#select-id').val("22").trigger('chosen:updated'); 

2) Nếu bạn đang sử dụng nhiều lựa chọn, thì bạn có thể cần đặt nhiều giá trị cùng một lúc.

$('#documents').val(["22", "25", "27"]).trigger('chosen:updated'); 

Thông tin thu thập được từ các liên kết sau đây:
1) Chosen Docs
2) Chosen Github Discussion

+0

Sự hoàn hảo! Làm việc tuyệt vời. – Garconis

0

Đôi khi bạn phải gỡ bỏ các tùy chọn hiện tại để thao tác các tùy chọn đã chọn.

Dưới đây là một ví dụ làm thế nào để thêm tùy chọn:

<select id="mySelectId"> 
    <option value=""></option> 
    <option value="Argentina">Argentina</option> 
    <option value="Germany">Germany</option> 
    <option value="Greece">Greece</option> 
    <option value="Japan">Japan</option> 
    <option value="Thailand">Thailand</option> 
</select> 

<script> 
    mySelect = $('#mySelectId'); 
    var selected = mySelect.val();       //get current values 
    selected = selected.concat(['Germany','Argentina']); //merge with new values 
    selected = Array.from(new Set(selected));    //make values unique 
    mySelect.val(null);         //delete current options 
    mySelect.val(selected);        //add new options 
    mySelect.trigger('chosen:updated');     //update chosen 
</script>