Удалить строку запроса "?"в формате HTML метод GET - PullRequest
0 голосов
/ 23 июня 2018

У меня есть простая форма поиска изображений Google, которые открываются в новом окне.Когда я хочу изменить параметры формы на Unsplash (которые не используют строки запроса при поиске по URL), форма продолжает отправлять строку запроса; (

HTML

<input type="radio" id="google" name="image" onclick="googleImages();" checked/>
<label for="google">Google Images</label>

<input type="radio" id="unsplash" name="image" onclick="unsplash();"/>
<label for="unsplash">Unsplash</label>

<form id="form" method="GET" action="https://www.google.com/search?q=">
    <input id="input" type="text" name="q" value="" required>
    <input type="submit" value="Search" onclick="this.form.target='_blank';">
    <input id="helper" type="hidden" name="tbm" value="isch">
</form>

JS

var
  form = document.getElementById("form"),
  input = document.getElementById("input"),
  helper = document.getElementById("helper");

function googleImages() {
  form.action="https://www.google.com/search?q=";
  input.name="q";
  helper.name="tbm";
  helper.value="isch";
}
function unsplash() {
  form.action="https://unsplash.com/search/photos/";
  input.name="";
  helper.name="";
  helper.value="";
}

Как создать функцию, которая удаляет строку запроса из выходного URL-адреса? (И заново устанавливает параметры, когда они нужны для опции радио)

Ответы [ 2 ]

0 голосов
/ 23 июня 2018

Так что, если вы не отправляете какие-либо параметры на unsplash.com, не используйте форму отправки. Вместо этого используйте перенаправление javascript внутри функции unsplash ().

window.location.href = "https://unsplash.com/search/photos/";
0 голосов
/ 23 июня 2018

Вы пояснили в комментарии, что при вызове Unsplash вам нужно передавать строку поиска как часть URL, а не как параметр строки запроса, например: https://unsplash.com/search/photos/lion

Для этогос вашей текущей настройкой вам нужно будет сделать две вещи:

  1. Добавить строку в URL и

  2. Отключить поля формы.Отключенные поля формы вообще не отправляются вместе с формой; ссылка на спецификацию .(В качестве альтернативы, конечно, вы можете удалить их, но если вы в какой-то момент измените свою форму так, чтобы она имела target="_blank" или подобное, удаление их усложнило бы возможность поиска Unsplash, сопровождаемого поиском картинок Google.)

Так что-то вроде этого:

function unsplash() {
  // #1
  form.action="https://unsplash.com/search/photos/" + encodeURIComponent(input.value);
  // #2
  input.disabled = true;
  helper.disabled = true;
  helper.disabled = true;
}

Обратите внимание на использование encodeURIComponent.

ИКонечно, если вы обновили страницу таким образом, чтобы она открывала новое окно вместо замены текущего окна, вы бы обновили функцию googleImages, установив disabled в false для этих входов (так как она останется true с помощью функции unsplash).Но вам не нужно этого делать, если вы заменяете страницу.

...