将搜索查询和预设文本连接到搜索

Concatenate search query and preset text to a search

正在尝试重新创建此搜索 url https://www.bing.com/search?q=site:https://www.imdb.com/title+Hakunamatata

但是这段代码一直在做错误的事情。我想连接 URL。不启动第二个内联查询

<form method="get" action="http://www.bing.com/search">
    <input type="text" name="q" size="25" maxlength="255" value="Hakunamatata" />
    <input type="hidden" name="q1" value="site:www.imdb.com/title" />
    <input type="submit" value="Bing Search" />
</form>

我一直得到的是 URL 中的 & 而不是 +。
是否有某种 Javascript 或可以将搜索词合并为一次搜索的东西?

当触发 submit 事件时,您需要使用 JavaScript 将 'site:www.imdb.com/title ' 添加到输入的值。

form.addEventListener('submit', function(){
  query.value = 'site:www.imdb.com/title ' + query.value;
})
<form method="get" action="http://www.bing.com/search" id="form">
    <input type="text" name="q" size="25" maxlength="255" value="Hakunamatata" id="query"/>
    <input type="submit" value="Bing Search" />
</form>

所以,我有一个兄弟用 JS 重建脚本,因为我需要一些复杂的格式调整。这是最终结果

    function submitForm(elm, url, values, query) {
        let baseLoc = new URL(url);
        let searchParams = new URLSearchParams(baseLoc.search);
        for (const key in values) {
            let inputBox = elm.parentElement.querySelector(
                `input[name="${values[key]}"]`
            );
            searchParams.set(key, inputBox.value);
        }
        for (const key in query) {
            searchParams.set(key, query[key]);
        }
        let newTab = window.open(`${url}?${searchParams.toString()}`);
        if (!newTab)
            alert(
                'Pop-up Blocker is enabled! Please add this site to your exception list.'
            );
    }
<form onsubmit="event.preventDefault();">
    <input type="text" value="" name="inputBox" />
    <input type="text" value="" name="inputBox2" /><br />
    <button
        onclick="submitForm(this, 'https:/\/bing.com/search/',{'q':'inputBox'},{'test':'fish','123':'lookup'});"
        class="btn btn-primary btn-sm"
    >
        btn2
    </button>
    <button
        onclick="submitForm(this, 'https:/\/ebay.com/sch/',{'_nkw':'inputBox2'},{'asd':'123'});"
        class="btn btn-primary btn-sm"
    >
        btn2
    </button>
</form>

可选,如果您想要一个按钮同时提交所有按钮,请使用此选项。

    function submitAllButtons(elm) {
        let allButtons = elm.parentElement.querySelectorAll('button');
        console.log(allButtons);
        for (const button of allButtons) {
            if (elm != button) button.click();
        }
    }
    <button onclick="submitAllButtons(this)" class="btn btn-secondary btn-sm">
        ALL
    </button>