Итак, проблема здесь в том, что в первом случае вы привязываете обработчик события к элементу, а во втором - запускаете его.Давайте рассмотрим первый случай:
$('#form_to_submit').submit(function(evt){ ... });
По сути, вы делаете что-то вроде
document.getElementById('form_to_submit').addEventListener(
'submit',
function(evt){...},
false
);
Второй случай - вы указываете форму для отправки, поэтому она работает.Если вы хотите, чтобы обработчик работал с вашим пользовательским кодом, вам понадобятся оба из них.Сначала свяжите ваш обработчик событий, затем onchange проинструктируйте форму для отправки.
$('#form_to_submit').submit(function(evt){ ... });
$('#select_dropdown').change(function(){
$('#form_to_submit').submit();
});
Имейте в виду, что, как уже говорили другие люди, если ваше действие настроено на переход в другое место, вы можетея не вижу результатов обработчика связанных событий, поэтому вместо явного указания URL-адреса для вашего действия вам придется использовать что-то, чтобы форма не перемещалась куда-либо, например action="javascript:void(0)"
или тому подобное.
код немного чище, вы можете извлечь ajax из безымянной функции и поместить его в именованную функцию и вызвать ее при изменении, чтобы она выглядела следующим образом.
var fetchList = function(){
$.ajax(...);
};
$('#form_to_submit').submit(fetchList);
$('#select_dropdown').change(fetchList);
Я не запускал этот код,пожалуйста, извините за любые глупые синтаксические ошибки, которые я сделал.Но это должно помочь вам в этом.Удачи!:)