Как изменить строку запроса при отправке формы GET с помощью JQuery? - PullRequest
5 голосов
/ 22 мая 2011

Предположим, что у меня есть простая форма на моей странице, например:

<form action="/properties/search" method="GET" id="form_search">
  <p>
    <label for="price">Min price:</label>
    <input type="text" name="min_price" id="min_price">
  </p>
  <p>
    <label for="price">Max price:</label>
    <input type="text" name="max_price" id="max_price">
  </p>
  <p>
    <input type="submit">
  </p>
</form>

Когда я отправляю свою форму, у меня есть следующий URL:

HTTP: //.../properties/search MIN_PRICE = 100000 & MAX_PRICE = 200000

Я хочу изменить этот URL, чтобы иметь:

HTTP: //.../properties/search цена = 100000,200000

Для этого я использую JQuery и плагин строки запроса JQuery :

$(document).ready(function() {
    $("#form_search").submit(function() {
        var querystring = rewrite_interval_qstring();
        // querystring equals "?price=100000,200000" -> exactly what I want !

        // ???
    });
});

Как я могу изменить (комментарий "???") URL отправки? Я проверил следующие инструкции отдельно, но это не работает.

window.location = querystring;
window.location.href = querystring;
window.location.search = querystring;

Ответы [ 3 ]

6 голосов
/ 22 мая 2011

Ты почти у цели. Перехватите событие отправки (как вы делаете), извлеките минимальное и максимальное значения, создайте ваш URL и установите window.location.href

$(document).ready(function() {
    $("#form_search").submit(function(event) {
        event.preventDefault();
        $this = $(this);
        // var url = rewrite_interval_qstring();
        var min_price = $('#min_price').val();
        var max_price = $('#max_price').val();
        var url = $this.attr('action') + '?price=' + min_price + ',' + max_price;
        window.location.href = url;
    });
});
2 голосов
/ 22 мая 2011

Необходимо запретить действие отправки по умолчанию

$(document).ready(function() {
    $("#form_search").submit(function(event) {
        event.preventDefault(); // <-- add this
        var querystring = rewrite_interval_qstring();
        // querystring equals "?price=100000,200000" -> exactly what I want !

        window.location.href = querystring; // <-- this should work.
    });
});
1 голос
/ 22 мая 2011

Ответ Роба Коуи - один из методов.Еще одно добавление скрытого поля с именем "price" и заполнение его перед отправкой нужного значения.

...