Выбранное обновление не работает

У меня есть выбранный раскрывающийся список. Я изменил содержимое опций и выбрал триггер вызова: обновлено, но «Выбрано» не перестраивает раскрывающийся список. это мое обновление

<select name="shortcode" style="width: 150px; display: none;" class="chosen_select chzn-done" id="select_shortcode">
   <option value=""></option> 
   <option value="7183">7183</option>
   <option value="7983">7983</option>
</select>

И это раскрывающийся список «Выбрано» (его следует перестроить и удалить два последних <li> )

<ul class="chzn-results">
   <li id="select_shortcode_chzn_o_1" class="active-result" style="">7183</li>
   <li id="select_shortcode_chzn_o_2" class="active-result" style="">7983</li>
   <li id="select_shortcode_chzn_o_3" class="active-result" style="">8208</li>
   <li id="select_shortcode_chzn_o_4" class="active-result" style="">8308</li>
</ul>

Это мой код jQuery:

$('#select_shortcode_mask').change(function(){
    var shortcode_mask = $('#select_shortcode_mask').val();
    $('#select_shortcode').empty();
    var shortcode = {"7X83":["7183","7983"],"8x08":["8208","8308"]};
    $('#select_shortcode').append("<option value=''></option>");
    if(jQuery.isArray(shortcode[shortcode_mask])){
            $.each( shortcode[shortcode_mask], function( subkey, subvalue ) {
                $('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
            })
    } else {
        var full_shortcode = ["7183","7983","8208","8308"];
        if(jQuery.isArray(full_shortcode)){
            $.each(full_shortcode, function( subkey, subvalue ) {
                $('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
            })
        }
    }
    $("#select_shortcode").trigger("chosen:updated");
});

РЕШЕНО: я использую более старую версию, поэтому она должна:

$("#select_shortcode").trigger("liszt:updated");

Так что скидывай ^^


person Tien Hoang    schedule 02.01.2014    source источник
comment
Хорошо, выбранный вами вариант не обновлен, но обновлен ли исходный выбор?   -  person BENARD Patrick    schedule 02.01.2014
comment
Да, мой исходный выбор обновлен. Почувствуйте, как триггер не работает   -  person Tien Hoang    schedule 02.01.2014
comment
Вы проверяли наличие ошибок в консоли во время события изменения?   -  person BENARD Patrick    schedule 02.01.2014
comment
Да, в моей консоли нет ошибки, все ясно. Мой первоначальный выбор менялся каждый раз, когда происходило событие, но мне казалось, что триггер не запускается. Это буровая установка   -  person Tien Hoang    schedule 02.01.2014
comment
Моя вина. Это старая версия. Так что сваливай @@   -  person Tien Hoang    schedule 02.01.2014
comment
@Tien Hoang, вы можете опубликовать свой ответ и принять его (я имею в виду, что вы не должны помещать всю информацию в раздел вопросов). Это поможет другим пользователям и будет выглядеть лучше и понятнее. Прочтите самостоятельный ответ   -  person Alex.K.    schedule 06.11.2014
comment
да, использование Листа помогло. спасибо   -  person Sarvar Nishonboyev    schedule 07.01.2015


Ответы (6)


Я часто использую выбранный плагин, конечно, я сталкиваюсь с этой проблемой не раз.

обычно используйте .trigger("chosen:updated"), чтобы решить эту проблему. Но всего минуту назад этот метод больше не работал, я чувствую себя таким запутанным, потому что я использую одну и ту же функцию в 2 файлах js, скажем, a.js и b.js, она работает в a.js, но не работает в b.js. Я не могу понять, почему... Я почти теряю рассудок!!!

Итак, я снова проверяю API. Я нашел .chosen("destroy"), вдохновивший меня!

И я думаю, что это Окончательное решение: разрушить его и восстановить.

$('.chosen').chosen("destroy").chosen();

Я слишком громкий? :п

person Kaiyu Lee    schedule 01.04.2016
comment
Да, это сработало и для меня, я пробовал как .trigger(chosen:updated), так и .trigger(list:updated); Ни один, кажется, не решает. .выбрано(уничтожить).выбрано(); это сработало - person Sandeep; 03.05.2018
comment
Вот это да ! Это единственное, что сработало для меня. Я также заметил, что если тег select является статическим и только если параметры добавляются динамически $(#select_shortcode).trigger(chosen:updated); работает нормально, однако, если весь выбор создается динамически вместе с параметрами только $('.chosen').chosen(destroy).chosen(); работает. Вы знаете, почему это так? - person bluelurker; 02.07.2019

Ваша функция изменения вызывает изменение для элемента "#select_shortcode_mask". Ваш список выбора имеет идентификатор: "#select_shortcode"

person Hydrospanners    schedule 21.10.2014

Мой Путь таков...

$timeout(function() {
  $('#CampSrchId').trigger('chosen:updated');
}, 1000);

OR

window.setInterval(function() {
  $('#CampSrchId').trigger('chosen:updated');
}, 1000);      
person Asad Ali Khan    schedule 07.02.2017

я использовал

$("select").chosen({ width: "100%" });//chosen hack

Как и при использовании .trigger("chosen:updated");, это не решило проблему. Это выглядит хакерским, но работает хорошо.

person Jamie Paterson    schedule 14.07.2015
comment
В моем случае мне пришлось явно установить ширину в элементе управления select. Спасибо за подсказку! - person Saurabh; 24.03.2016

Код :

$('#test')
  .val(1)
  .trigger('liszt:update')
  .removeClass('chzn-done');

$('#test_chzn').remove();


$("#test").chosen({
  width: "220px",
  no_results_text: "test"
});
person Steven Delgado    schedule 22.07.2016
comment
попробуй усилить свой ответ - person ddb; 22.07.2016

В моем случае это было из-за двойного включения jQuery (один раз в голове и один раз в нижнем колонтитуле)... Я удалил тот, что в нижнем колонтитуле, и .trigger('chosen:updated'); работает как шарм!

person ReaperSoon    schedule 07.07.2020