提交不带查询字符串“?q = value”的“ URL /值”形式的搜索表单

时间:2018-06-24 01:00:49

标签: javascript html forms submit query-string

我有一个简单的图像搜索表单,该表单会在新窗口中打开:

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="poly();"/>
<label for="unsplash">Poly</label>


<form id="form" method="GET" action="https://www.google.com/search?q=">
  <input id="input" type="text" name="q" value="" required>
  <input id="button"  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"),
  button = document.getElementById("button"),
  helper = document.getElementById("helper");

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

代码有效here

问题

当我在搜索表单中更改为Poly时,查询字符串继续设置为“?”在URL输出中,在搜索结果页面上产生错误。

Google图片使用一些网址参数,例如google.com/search?q=lion&tbm=isch,我可以在表格中复制它们。但是,Poly不使用查询字符串(?)或参数(param = value),它们仅使用poly.google.com/search/lion

之类的“ URL /值”

问题

当我选择Poly时,如何创建一个查询字符串“?”的函数?删除提交时生成输出“ URL /值”?换句话说,将搜索字词(值)作为URL的一部分传递而无需任何查询或参数。

1 个答案:

答案 0 :(得分:0)

对于poly,您似乎正导航到其他URL。您不希望或不需要将其作为表单提交。而不是在JavaScript中提交表单调用window.location.href =。