У меня есть опция выбора для фильтрации сообщений по категориям. При выбранном изменении я хочу, чтобы ajax-запрос отправлялся и загружал сообщения выбранной категории. В настоящее время у меня это работает с помощью кнопки отправки, но мне нужно, чтобы это работало над изменением выбора, но я не могу заставить его работать только с помощью выбора.
Ниже приведен сценарий и форма, с которой я работаю при отправке с помощью кнопки.
<form action="<?php echo site_url(); ?>/wp-admin/admin-ajax.php" method="POST" id="filter" class="ghost-select">
<?php
if( $terms = get_terms( 'category', 'orderby=name' ) ) :
echo '<select id="categoryfilter" name="categoryfilter"><option>Select category...</option>';
foreach ( $terms as $term ) :
echo '<option value="' . $term->term_id . '">' . $term->name . '</option>';
endforeach;
echo '</select>';
endif;
?>
<!-- <button>Apply filter</button> -->
<input type="hidden" name="action" value="myfilter">
<!-- onchange="this.form.submit();" -->
</form>
$('#filter').submit(function(){
var filter = $('#filter');
$.ajax({
url:filter.attr('action'), // ajax
data:filter.serialize(), // form data
type:filter.attr('method'), // POST
beforeSend:function(xhr){
// filter.find('button').text('Processing...'); // changing the button label
},
success:function(data){
// filter.find('button').text('Apply filter'); // changing the button label back
$('#response').html(data); // insert data
}
});
return false;
});
});
Мне надоело менять начальную функцию отправки на следующую, но она ничего не делает:
$('#filter select').on('change', function() {
Я также пытался добавить onchange="this.form.submit();"
к самому выделению, но это отправляет форму и переносит вас со страницы на URL-адрес действия формы, поэтому теперь я знаю, что это неправильный путь.
Я не уверен, что мне не хватает, поэтому любая помощь с этим будет принята с благодарностью!
Спасибо