2012-07-05 25 views

Odpowiedz

103

Po pierwsze, musisz dodać <option> s do <select>, do której wybrał Chosen. Na przykład:

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

Następnie trzeba wyzwolić zdarzenie chosen:updated:

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

Więcej informacji można znaleźć here (choć trzeba przewinąć w dół do Change/Update Events).


Aktualizacja 07 sierpnia 2013

Nazwa impreza zmieniła się chosen:updated od wersji 1.0 (lipiec 2013) jako Tony wspomina w komentarzach. Zaktualizowaną dokumentację można znaleźć pod adresem here.

+3

Bijcie mnie przez dwie sekundy!

+3

@Mike Przepraszamy za to ';)' zdarza mi się cały czas! – Bojangles

+10

Począwszy od wersji 1.0, której wyzwalacz jest teraz "wybrany: zaktualizowany". Zobacz http://harvesthq.github.io/chosen/#change-update-events – Tony

41

najnowsza wersja wybrana zmienił nazwę wydarzenia na „najważniejsze: zaktualizowane”

tak Twój kod będzie tak:

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

To działa dla mnie. Ale poniższy kod nie działa ($ ('. Blah'). Trigger ("liszt: updated");). – Duli

+0

ten zastępuje istniejące tagi. @ Amot TotPeRo pracował dla mnie – dreamer

3

Można wywołać tę funkcję, aby dodać element, aby wybrane po zapisaniu Element do serwera przy użyciu Ajax:

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

Ajax wywołanie:

$.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

Spróbuj ..

  $.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>"); 
          } 
         } 
        }); 
        } 
       }); 
Powiązane problemy