Изменение действия формы в зависимости от выбора опции работает только в домашних условиях - PullRequest
0 голосов
/ 17 апреля 2020

Я создаю специальную форму поиска для проекта WordPress, над которым я работаю. Форма поиска. php код выглядит следующим образом:

<form role="search" method="get" id="searchform" class="searchform col-md-4" >
    <input type="search" value="<?php echo get_search_query(); ?>" name="term" id="s" class="form-control" placeholder="Find Freelancers & Agencies">
    <select id="search-options">
        <option>Select...</option>
        <option value="Projects">Projects</option>
        <option value="Freelancers">Freelancers</option>
    </select>
</form>

В основном я хочу изменить действие формы в зависимости от того, что пользователь выбирает в качестве опции. Для этого я использую следующий скрипт:

jQuery(document).ready(function(){

jQuery("#search-options").change(function(){
 // change fn on dept id
 var selected_opt = $(this).children(":selected").text(); // Get the selected option value

 switch(selected_opt){
 case "Projects":
    jQuery("#searchform").attr('action', '/advanced-search/');
 break;

 case "Freelancers":
    jQuery("#searchform").attr('action', '/service-provider-search/');
 break;

 default:
    jQuery("#searchform").attr('action', '#');
 // Default action
 }
});
});

Скрипт корректно ставится в очередь в моих функциях. php file.

Я заметил, что хотя это нормально работает, когда я нахожусь домашняя страница, она не работает, когда я нахожусь на других страницах. Когда я использую форму поиска на других страницах, URL-адрес результата будет http://example.com/page/?term=search_term

Есть предложения?

1 Ответ

0 голосов
/ 20 апреля 2020

Для всех, кто интересуется, это была опечатка в строке 3. Все знаки «$» должны быть «jQuery» при использовании jQuery для разработки в WordPress из-за известного ограничения режима совместимости.

Эта строка:

 var selected_opt = $(this).children(":selected").text(); // Get the selected option value

Должно быть так:

 var selected_opt = jQuery(this).children(":selected").text(); // Get the selected option value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...