Вместо того, чтобы вручную запускать событие click
на кнопке отправки, почему бы не вызвать вместо этого метод submit()
в форме?
function myFunction(){
document.getElementById('theForm').submit();
}
Поскольку вы используете просто vanilla JS,вам не нужно включать какую-либо библиотеку: в этом и заключается прелесть написания vanilla JS.
Pro-tip: вы можете не использовать встроенную привязку JS и использовать addEventListener
для проверки change
событие вызывается из элементов <select>
(при условии, что вы хотите связать все элементы <select>
):
var formEl = document.getElementById('theForm');
var selectEls = formEl.querySelectorAll('select');
[].prototype.slice.call(selectEls).forEach(function(selectElement) {
// Bind event listener to each select element
selectElement.addEventListener('change', function() {
formEl.submit();
});
});
В противном случае вы также можете использовать разделенные запятыми селекторы идентификаторов в вашем методе querySelectorAll()
,Например:
var selectEls = formEl.querySelectorAll('#year_start, #month_start, #day_start');
Важное примечание
Исходя из ваших комментариев, я чувствую, что вы хотите, чтобы JS выполнял какие-то действия в коде PHP.Помните, что PHP - это серверный язык , поэтому, если вы хотите использовать JS для запуска какой-либо мутации состояния сервера через PHP, вам нужно будет использовать AJAX.
Вот пример подтверждения концепции:
var formEl = document.getElementById('theForm');
var selectEls = formEl.querySelectorAll('select');
Array.prototype.slice.call(selectEls).forEach(function(selectElement) {
// Bind event listener to each select element
selectElement.addEventListener('change', function() {
// Here is just dummy code to show you how binding works
console.log('Will submit form');
// Uncommt this line to perform actual form submission
//formEl.submit();
});
});
<form method="post" id="theForm" enctype="multipart/form-data">
<select id="year_start" name="year_start">
<option>2009</option>
<option>2010</option>
<option>2011</option>
<option>2012</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
<option>2016</option>
<option>2017</option>
<option>2018</option>
</select>
<select id="month_start" name="month_start">
<option>January</option>
<option>February</option>
<option>December</option>
</select>
<select id="day_start" name="day_start">
<option>1</option>
<option>2</option>
<option>30</option>
<option>31</option>
</select>
<input type="submit" id="submit_button">Submit</button>
</form>