2013-02-27 2 views
12

Прежде чем нажать кнопку «Сброс», я выбираю «Компания» в Выбранном списке (раскрывающемся списке). Событие происходит нормально после нажатия кнопки сброса. Я снова выбираю «Компания», но событие change в выпадающем списке не происходит.Как вызвать событие изменения для выбранного (jQuery)

Может ли кто-нибудь сказать мне, как вызвать событие изменения для раскрывающегося списка после нажатия кнопки сброса, а затем одного и того же элемента?

код у меня до сих пор:

$("#mainMenu").change(function(e){ 
    e.preventDefault(); 
    loadFirstManu(true); 
}); 

код для кнопки сброса:

$("#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(''); 
    }); 

});

ответ

19

Это то, что я не понял,:

$('#my-select').val(5).trigger("liszt:updated") 

liszt:updated больше не работает в новой версии выбрали вместо этого использовать ниже, как Alexandru Cojan's ответ предлагая

trigger("chosen:updated"); 
+23

Теперь выбран триггер: «обновлено» ' – Johannes

+1

Спасибо за коррекция. Это новое соглашение об имени триггера для 1.0, как указано в [Заметках изменения] (https://github.com/harvesthq/chosen/releases/tag/1.0.0). – arvidkahl

0

Я не знаю, если это ваш случай или нет, но ваш код выше, должен работать,

$("#mainMenu").change(function(e){ 
     e.preventDefault(); 
     loadFirstManu(true); 
    }); 

но, пожалуйста, обратите внимание, что «изменение» событие происходит в большинстве браузеров, когда вы unfocus выберите вход

Так при нажатии кнопки сброса , непосредственно перед выполнением действий возвращаются в исходном состоянии OnChange срабатывает.

Теперь попробуйте нажать вне выбора входа после изменения выбора и посмотреть, если он все еще работает или нет

+0

событие происходит до того, как я нажму кнопку сброса после этого, я выбираю элемент, который я выбрал, прежде чем нажимать кнопку сброса, это не событие. – Leo

+0

Так как я не знаю структуру вашего html/кода, вы можете добавить что-то вроде alert («triggered»); в .change(), которую вы используете, чтобы узнать, где именно ошибка – Shehabix

+0

после сброса клика, и тот же элемент перед событием сброса клика не возникает. Я также поставил предупреждение («Hello»), чтобы обнаружить событие, или окончательно не произошло. – Leo

0

Может быть, вы должны попробовать использовать .он, как ваши $ («# MainMenu») может быть изменен где-то (может скажем без примера). Попробуйте сделать это:

$("body").on('change','#mainMenu',function(){ 
    ... 
}); 

или любой родительский селектор вместо «тяжелого» тела

0

Если я не ошибаюсь, чтобы понять вас, то вы хотите, чтобы вызвать изменение событий после нажатия на кнопку сброса. вы можете сделать это, просто добавив одну строку кода // Код

 $("#btn_reset").click(function(){ 
     // your code here 
     $("#mainMenu").trigger('change'); 
     //you can write this as per your requirements ie. at start or end. 

     }); 
7

для новой версии выбранной в событии «выбрано: Обновит ред»

$(selector).trigger("chosen:updated") 
4

Если мне нужно просто обновить значение выбрано выберите - .trigger('chosen:updated') достаточно. Но если у меня есть обработчик изменений и хочу, чтобы он был вызван - мне нужно сделать .trigger('chosen:updated').change()

+0

это сработало для меня !! – AndeeC

Смежные вопросы