【问题标题】:Multiple search inputs to output as one search in wordpress多个搜索输入输出为 wordpress 中的一次搜索
【发布时间】:2013-11-10 16:56:13
【问题描述】:

我正在尝试创建一个具有 4 个输入但输出为一个搜索的搜索框。这是我当前的代码:

 <form method="get" id="searchform" action="http://sitename.com/">
 <input type="text"  name="s" />
 <input type="text" name="a" />
 <input type="text"  name="b" />
 <input type="text"  name="c" />
 <div class="clear_space"></div>
 <input type="submit" class="submit" name="submit" id="searchsubmit" value="Search" />
 </form>

但是在 wordpress 中的输出是这样的:/?s=milk&a=eggs&b=cheese&c=garlic&submit=Search

但我需要这样输出:/?s=milk+egg+cheese+garlic&submit=Search

因此,不知何故,这些额外的输入需要将其文本添加到第一个 ?s= 中,只需一个 +... 非常感谢任何帮助。

【问题讨论】:

    标签: php wordpress forms search


    【解决方案1】:

    你在开玩笑吗??

    您正在寻找的+ 只是一个空格。有一个文本字段,提交表单时,单词之间的空格将转换为+

    【讨论】:

    • 我需要 4 个输入,因为我正在构建一个人们可以搜索 4 个单独项目的工具。
    • 但是他们需要返回一个搜索结果。
    • 因此,您使用explode 将结果拆分为一个数组或其他内容,然后对您的逻辑进行编程以使用数组中的任何一个单词查找结果。
    【解决方案2】:

    哇,你有很多问题,但在我们深入探讨之前,让我告诉你,你的“输出”实际上是一个 get 参数或 URL。现在您应该 NEVER 为不同的标签使用相同的 id (!!!)。如果您认为这样做有正当理由,请再想一想。

    如下更改您的表单:

    <form method="get" id="searchform" action="http://sitename.com/">
     <input type="text" class="field" placeholder="Search"   />
     <input type="text" class="field" placeholder="Search"  />
     <input type="text" class="field" placeholder="Search"  />
     <input type="text" class="field" placeholder="Search"  />
     <input type="hidden" name="s" id="s" />
     <div class="clear_space"></div>
     <input type="submit" class="submit" name="submit" id="searchsubmit" value="Search" />
     </form>
    

    然后实现form submit event 来计算您的值并分配给您的输入字段。干杯。

    编辑:

    在提交表单之前使用以下 js 代码运行:

    //...
    var value = "";
    $(".field").each(function(){
        value += ((value !== "") ? (" ") : ("")) + $(this).val();
    });
    $("#s").val(value);
    //...
    

    【讨论】:

    • 抱歉,这是一个愚蠢的疏忽。我只是复制输入以在表单中创建 4 以查看发生了什么。如果我有其他问题,我会尝试围绕表单提交事件并回到这里。我猜 .js 将收集 4 个输入并创建 get 查询
    • js 将确保您的隐藏输入包含要搜索的值,以空格分隔,并且在您的隐藏输入包含正确的值后,才应该提交您的表单。
    • 我不能只用 php 做这个吗?有点担心,因为它说表单提交事件在 IE 中不起作用
    • 什么是“它”,它在哪里说的?您在浏览器中使用该站点,PHP 在服务器上执行。您必须在用户单击提交按钮之后和有效提交表单之前处理表单提交。所以你不能在服务器端这样做,你不能在 PHP 中这样做。
    • 好吧...我知道我现在需要 .js 来处理事件。还是有点不知所措。我知道在提交时,表单提交事件会将 4 个输入的值组合成一个隐藏输入的值,这将是作为 GET 参数提交的那个,对吗?关于在哪里了解更多关于实现这一目标的任何帮助?
    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多