2016-09-30 5 views
0

У меня есть код jQuery, который заполняет форму при изменении значения выпадающего списка select. Сам по себе он работает так, как ожидалось, но мне нужно заставить его запускаться при загрузке страницы.jQuery change() событие не срабатывает при использовании .trigger ('change')

Я включаю родительскую таблицу в селектор, так как элементы <select> создаются динамически.

Как я уже говорил, это работает так, как ожидается, когда выпадающий выбор сделан пользователем, но следующее $.each не запускает событие, даже если оно выполняет итерацию по массиву и изменяет выпадающее значение - событие изменения никогда не срабатывает.

jQuery(document).ready(function ($) { 

    var _dropdownVals = [ '-1', '11', '63' ]; 

    $.each(_dropdownVals, function (val) { 
     $('select[name="form_list_0"]').val(val).trigger('change'); 
    }); 

    $('table').on('change', 'select[name^="form_list_"]', function() { 
     ... do something 
    }); 

}); 

Я даже не думаю, что .trigger() должно быть необходимым ...

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

+1

Вы увольняете событие «change» перед его назначением. –

+0

@AlanJurczak Да, я был. Это поставило проблему. – rwkiii

ответ

4

Это стрельба, но вы еще не зарегистрировали обработчик событий! Обработчики событий обрабатывают события только после их регистрации. Попробуйте вместо этого:

$('table').on('change', 'select[name^="form_list_"]', function() { 
    ... do something 
}); 

$.each(_dropdownVals, function (val) { 
    $('select[name="form_list_0"]').val(val).trigger('change'); 
}); 

Вы, кстати, нужно использовать trigger, так как изменение значения программно автоматически не вызвать событие.

+0

Это прекрасно устраняет проблему. Я что-то узнал. Благодарю. – rwkiii

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