Отправка формы при выборе SELECT и добавление GET-параметров
У меня есть select с сортировкой постов.
<form class="order" action="" method="GET" id="sort">
<select name="orderby" class="orderby" aria-label="Shop order">
<option value="lenght"><?php pll_e('Sorting by Lenght');?></option>
<option value="price"><?php pll_e('Sorting by Price');?></option>
<option value="year"><?php pll_e('Sorting by Year');?></option>
</select>
<input type="hidden" name="paged" value="1">
</form>
Я написал на JQ скрипт, который бы отправлял эту форму, заодно и выводил бы get-параметры в строку. То есть хотелось бы, чтобы получалось так: site.ru/?orderby=length. Ну и страница бы перезагружалась бы.
<script>
jQuery( function( $ ) {
$('#sort').on('change', function() {
$(this.form).submit();
console.log('мовпк');
});
} );
</script>
И еще вопрос - а можно ли сделать так, чтобы get-параметры с формы подтягивались к другим. Чтобы если уже содержались параметры, то получалось бы вот так:
site.ru/?lenght=50&orderby=length
Спасибо за помощь!
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
В JQuery слабоват, но вот решение на JavaScript
<script>
const select = document.getElementById('selectItem');
function load() {
const sel = window.location.search.replace('?', '').split('&').filter((item) => item.indexOf(select.name) !== -1);
if (sel.length) {
select.value = sel[0].split('=')[1];
}
}
jQuery( function( $ ) {
$('#sort').on('change', function() {
$(this.form).submit();
let search = window.location.search.replace('?', '').split('&');
search = search.filter((item) => item.indexOf(select.name) === -1);
search.push(select.name + '=' + select.value);
window.location.search = '?' + search.join('&');
console.log('мовпк');
});
} );
</script>
В html в тег <body>
<body onload="load()">
Данные будут автоматом подтягиваться в select при загрузке и автоматом ее перегружать, при выборе нового значения в select