Ответ 1
Вот что я понял:
$('#my-select').val(5).trigger("liszt:updated")
liszt:updated
больше не работает в новой версии выбранного вместо этого ниже, как ответ Александру Кожана, предлагающий
trigger("chosen:updated");
Перед тем, как нажать кнопку reset, я выбираю "Компания" в Избранном (выпадающий список). Событие происходит нормально после нажатия кнопки reset. Я снова выбираю "Компания", но событие change
в выпадающем списке не происходит.
Может ли кто-нибудь сказать мне, как вызвать событие изменения для раскрывающегося списка после нажатия кнопки reset, а затем одного и того же элемента?
Код, который у меня есть до сих пор:
$("#mainMenu").change(function(e){
e.preventDefault();
loadFirstManu(true);
});
Код для кнопки reset:
$("#btn_reset").click(function() {
CKEDITOR.instances.ckeditor.setData('');
$('.mchosen').each(function() {
$(this).val('').trigger('liszt:updated');
$('#submenu').attr('disabled', 'disabled').html('');
$('#secondsubmenu').attr('disabled', 'disabled').html('');
$('#s-menu').removeClass('required').html('');
$('#secondsubmenu').removeClass('validate[required]');
$('#tabmenu').attr('disabled', 'disabled').html('');
$('#tab').removeClass('required').html('');
});
});
Вот что я понял:
$('#my-select').val(5).trigger("liszt:updated")
liszt:updated
больше не работает в новой версии выбранного вместо этого ниже, как ответ Александру Кожана, предлагающий
trigger("chosen:updated");
для новой версии выбранного события выбрано: обновлено
$(selector).trigger("chosen:updated")
Если мне нужно только обновить значение в выбранном select - .trigger('chosen:updated')
, достаточно. Но если у меня есть обработчик изменений и вы хотите его вызвать - мне нужно сделать .trigger('chosen:updated').change()
Я не знаю, является ли это вашим делом или нет, но ваш код выше должен работать,
$("#mainMenu").change(function(e){
e.preventDefault();
loadFirstManu(true);
});
но обратите внимание, что событие "изменить" происходит в большинстве браузеров, когда вы нефокусируете выберите вход
Итак, когда вы нажимаете reset, перед выполнением действия reset запускается onchange.
Теперь попробуйте щелкнуть вне входа select после изменения выбора и посмотреть, все ли работает или нет.
Возможно, вам стоит попробовать использовать .on, так как ваш $('# mainMenu') может быть где-то изменен (не могу сказать без примера). Попробуйте сделать это:
$("body").on('change','#mainMenu',function(){
...
});
или любой родительский селектор вместо "тяжелого" тела
Если я не ошибаюсь, чтобы понять вас, вы можете активировать изменение события после нажатия кнопки reset. вы можете сделать это, просто добавив одну строку к вашему коду // код
$("#btn_reset").click(function(){
// your code here
$("#mainMenu").trigger('change');
//you can write this as per your requirements ie. at start or end.
});