2012-07-05 27 views
38

tôi thực hiện một jQuery Chosen thả xuống như thế này:jQuery Chosen cắm thêm tùy chọn động

$('.blah').chosen(); 

tôi không thể tìm thấy làm thế nào tôi có thể thêm tùy chọn, một cái gì đó như:

$('.blah').chosen('add', name, value); 

Trả lời

103

Trước tiên, bạn cần thêm <option> s vào số <select> mà Người được chọn. Ví dụ:

$('.blah').append('<option value="foo">Bar</option>'); 

Sau đó, bạn cần phải kích hoạt sự kiện chosen:updated:

$('.blah').trigger("chosen:updated"); 

thông tin có thể tìm thêm here (mặc dù bạn cần phải cuộn xuống để Change/Update Events).


Cập nhật ngày 07 tháng tám năm 2013

Tên sự kiện đã thay đổi để chosen:updated kể từ phiên bản 1.0 (tháng 7 năm 2013) như Tony đề cập trong các ý kiến. Các tài liệu cập nhật có thể được tìm thấy here.

+3

Đánh bại tôi bằng hai giây!

+3

@Mike Xin lỗi về điều đó ';)' nó xảy ra với tôi mọi lúc! – Bojangles

+10

Bắt đầu với phiên bản 1.0 mà trình kích hoạt hiện được "chọn: cập nhật". Xem http://harvesthq.github.io/chosen/#change-update-events – Tony

41

phiên bản mới nhất được lựa chọn thay đổi tên sự kiện để "lựa chọn: cập nhật"

do đó, mã của bạn sẽ như thế này:

$('.blah').append("<option value='"+key+"'>"+value+"</option>"); 
$('.blah').val(key); // if you want it to be automatically selected 
$('.blah').trigger("chosen:updated"); 
+0

Điều này phù hợp với tôi. Nhưng mã sau đây không hoạt động ($ ('. Blah'). Trigger ("liszt: updated");). – Duli

+0

điều này sẽ thay thế các thẻ hiện có. @ TotPeRo của amswer làm việc cho tôi – dreamer

3

Bạn có thể gọi chức năng này để thêm yếu tố để lựa chọn sau khi bạn lưu yếu tố để máy chủ sử dụng Ajax:

function appendToChosen(id,value){ 
    $('.blah') 
     .append($('<option></option>') 
     .val(id) 
     .attr('selected', 'selected') 
     .html(value)).trigger('liszt:updated'); 
} 

Ajax gọi:

$.ajax({ 
    type: 'POST', 
    url: 'savepage.php', 
    data: $('#modal-form form').serialize(), 

    success: function(data, status) { 
     appendToChosen(data[0],data[1]); 
    }, 
    error: function (response) { 
     alert(response); 
    } 
    }).always(function(data, status) { 
     //hide loading 
    }); 
1

Hãy thử điều này ..

  $.ajax({ 
      url: "@Url.Action("Actionname", "Controller")", 
      data: { id: id }, 
       dataType: "json", 
       type: "POST", 
       success: function (data) { 
       $("#id_chzn .chzn-results").children().remove(); 
       var opts = $('#id')[0].options; 
        $.map(data, function (item) { 
         var text = item.text; 
         for (var i = 0; i < opts.length ; i++) { 
          var option = opts[i]; 
          var comparetext = option.innerText; 
          var val = 0; 
          if(text == comparetext) 
          { 
           val = option.index; 
           $('#id_chzn .chzn-results').append("<li id='id_chzn" + val + "' class='active-result' style>" + item.text + "</li>"); 
          } 
         } 
        }); 
        } 
       }); 
Các vấn đề liên quan