【问题标题】:one search input multiple names一搜输入多个名字
【发布时间】:2018-09-29 20:52:31
【问题描述】:

所以我在一个网站上工作,你有一个搜索栏,你可以搜索多个网站,如 google、amazon、youtube 等。我的问题是,所有这一切都是一种形式,我不能使用名称 =“q”,它正在处理亚马逊和维基百科上最多的搜索 api,因为有名称 k(亚马逊)和搜索(维基百科) .有谁知道如何更改两个按钮的输入名称?

这是链接:https://multi-search.bss.design/

<form target="_blank">
  <input class="form-control visible" type="search" name="q" autofocus="" autocomplete="off" id="input" placeholder="Search...">
  <button class="btn btn-primary btn-circle" type="submit" value="Google" formaction="http://www.google.de/search" target="_blank" value="Google"><span><i class="fa fa-google animated" ></i></span></button>
  <button class="btn btn-primary btn-circle" type="submit" value="YouTube" formaction="https://www.youtube.com/search" target="_blank"><span><i class="fa fa-youtube-play animated"></i></span></button>
  <button class="btn btn-primary btn-circle" type="submit" value="Amazon" formaction="https://www.amazon.de/s/" target="_blank"><span><i class="fa fa-amazon animated"></i></span></button>
  <button class="btn btn-primary btn-circle" type="submit" value="Google Translate" formaction="https://translate.google.com/#auto/de/" target="_blank"><span><i class="fas fa-language animated"></i></span></button>
  <button class="btn btn-primary btn-circle" type="submit" value="Google Images" formaction="http://www.google.com/images?q"><span><i class="fa fa-image animated"></i></span></button>
  <button class="btn btn-primary btn-circle" type="submit" value="Netflix" formaction="https://www.netflix.com/search?q"><span><i class="fa fa-film animated"></i></span></button>
  <button class="btn btn-primary btn-circle" type="submit" value="Wikipedia" formaction="https://en.wikipedia.org/w/index.php?"><span><i class="fa fa-wikipedia-w animated"></i></span></button>
</form>

【问题讨论】:

    标签: javascript html html-input


    【解决方案1】:

    您可以简单地在每个按钮上存储一个data- 属性,代表相应的name 属性(默认为q)并在单击时动态更改它。

    例如: &lt;button ... type="submit" value="Wikipedia" data-search-input-name="search"&gt;

    document.querySelectorAll('button[type="submit"]').forEach(function(submitButton) {
      submitButton.addEventListener('click', function(e) {
        document.querySelector('[data-input-search]').setAttribute('name', 
          this.getAttribute('data-search-input-name') || 'q');
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form>
      <input data-input-search class="form-control visible" type="search" name="q" autofocus="" autocomplete="off" id="input" placeholder="Search...">
      <button class="btn btn-primary btn-circle" type="submit" value="Google" formaction="http://www.google.de/search" target="_blank" value="Google"><span><i class="fa fa-google animated" ></i></span>Google</button>
      <button class="btn btn-primary btn-circle" type="submit" value="YouTube" formaction="https://www.youtube.com/search" target="_blank"><span><i class="fa fa-youtube-play animated"></i></span>YouTube</button>
      <button class="btn btn-primary btn-circle" type="submit" value="Amazon" formaction="https://www.amazon.de/s/" data-search-input-name="k" target="_blank"><span><i class="fa fa-amazon animated"></i></span>Amazon</button>
      <button class="btn btn-primary btn-circle" type="submit" value="Google Translate" formaction="https://translate.google.com/#auto/de/" target="_blank"><span><i class="fas fa-language animated"></i></span>Translate</button>
      <button class="btn btn-primary btn-circle" type="submit" value="Google Images" formaction="http://www.google.com/images?q"><span><i class="fa fa-image animated"></i></span>Images</button>
      <button class="btn btn-primary btn-circle" type="submit" value="Netflix" formaction="https://www.netflix.com/search?q"><span><i class="fa fa-film animated"></i></span>Netflix</button>
      <button class="btn btn-primary btn-circle" type="submit" value="Wikipedia" formaction="https://en.wikipedia.org/w/index.php?" data-search-input-name="search"><span><i class="fa fa-wikipedia-w animated"></i></span>Wikipedia</button>
    </form>

    注意:这里只有 Wikipedia 按钮作为 Google/Amazon 阻止来自 iframe 的按钮,但您可以测试 Wikipedia。

    【讨论】:

    • 感谢您的回答,它现在可以工作了,我一直在研究这个问题,但就这么简单,thxxxxx
    • 如果您可以在引导工作室的预览中查看multi-search.bss.design,它正在工作,但不是,在网址上。
    • JS 似乎没有被执行。如果将其粘贴到浏览器的控制台上,然后单击 Wiki 搜索按钮,您会看到它确实有效。现在我不能说为什么没有从您网站上的那个 .js 文件执行它。
    • @Sebastian 你有一个Uncaught ReferenceError: google is not defined 错误,似乎是在添加的 JS 之前在同一个脚本文件上触发的。
    【解决方案2】:

    你可以例如:

    1.添加隐藏字段

    <input type="search" name="q" onkeyup="updateHiddenFields()">
    <input type="hidden" name="k">
    

    然后使用 JS 代码进行同步:

    const updateHiddenFields = (evt) => {
       document.getElementsByName('k')[0].value = document.getElementsByName('q') .[0].value 
    };
    

    2.点击按钮时重命名字段:

    document.getElementById('button-amazon')[0].onclick = () => document.getElementsByName('q')[0].setAttribute('name', 'k');
    

    (将id="button-amazon" 添加到亚马逊按钮以使其正常工作。)

    【讨论】:

    • 感谢您的回答,但我这样做太愚蠢了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 2022-01-25
    相关资源
    最近更新 更多