【问题标题】:How to display results from either searchbox OR from Checkbox如何显示来自搜索框或复选框的结果
【发布时间】:2013-04-12 16:46:26
【问题描述】:

我们有一个如下所示的搜索框,用户可以在其中输入一个值,例如 1234 ABC 街,单击“搜索”并显示结果。

<!--form1 -->

         <div id="inputBG">
       <form id="searchForm" class="search_field" method="get" action="">
            <input name="searchBox" id="searchBox" value="3440 Mark Drive" />
            <button type="button" onclick="searchMap()"><img src="Viewer/images/search.png" alt="Search" /></button>
          </form>
         </div>

这很好用。

但是,如果用户希望显示不止一种类型的结果,则用户可以单击名为“高级搜索”的图标。发生这种情况时,将在新窗口中打开一个仅包含下面显示的复选框的表单。

<!--Form2 --->
          <div id="featuresDiv">
            <form id="featuresForm">
               <br/>
                <input type="checkbox" name="srcoptions" onClick="checkAll(this.form,this)" checked>Check/Uncheck All<br>
               <label><input type="checkbox" name="featType" checked value="Addresses">Addresses</label><br/>
               <label><input type="checkbox" name="featType" checked value="Voter Precincts">Voter Precincts</label><br/>
               <label><input type="checkbox" name="featType" checked value="Voter Precincts (Pending)">Voter Precincts (Pending)</label><br/>
               <label><input type="checkbox" name="featType" checked value="Voting Polls">Voting Polls</label><br/>
               <label><input type="checkbox" name="featType" checked value="Voting Polls (Pending)">Voting Polls (Pending)</label><br/>
               <label><input type="checkbox" name="featType" checked value="Zip Codes">Zip Codes</label><br/>
               <label><input type="checkbox" name="featType" checked value="Zoning Petitions">Zoning Petitions</label><br/>
               <button type="button" onclick="searchMap()"><img src="MapViewer/images/magnifying_glass.png" alt="Search" /></button>
             </form>
            </div>

用户可以选择选中所有框或仅选中几个框。

当用户点击搜索时,这些复选框的结果应该会显示出来。

在使用复选框选项并且选中多个框的情况下,搜索框在搜索中变得无关紧要。

我已经尝试了几件事,但到目前为止似乎没有任何效果。

当我使用复选框选项并选中多个选项时,我收到自定义消息“您的搜索未返回任何结果”

这是我们尝试过的 Javascript,它应该在搜索来自搜索框 (form1) 或复选框 (form2) 时显示。

然后我们有 php,它应该将所有搜索值(搜索框或复选框)抓取到逗号分隔的值中。

这已经让我们发疯了 3 多天了。

值得注意的是,搜索框的默认值为 3440 Mark Street。

我真的很难过。

非常感谢任何帮助。

// Construct query
**$features = $_GET["featType"];**

$tsql = "SELECT *    FROM globes AS TBL
  WHERE KEY_TBL.RANK > 0
ORDER BY ListOrder, Name, TBL.RANK DESC";

【问题讨论】:

    标签: php javascript dojo


    【解决方案1】:

    有关 doGlobalSearch 中发生的事情以及 PHP 如何处理数据的更多信息会有所帮助。顺便说一句,我猜在发送到 PHP 的数据的格式和预期的格式方面存在一些差异。在黑暗中彻底刺伤,您是否尝试过只做featureList = features.join()?您确定需要引用各个值吗?

    只是一个建议,但我会这样做:

    • 将这两种形式合二为一。
    • 在隐藏高级搜索 div 时,默认所有复选框未选中(或禁用它们)。
    • 在显示高级搜索 div 时检查(或启用)它们。
    • 将 [] 添加到每个复选框名称的末尾,以便在提交表单时将(选中的)值作为数组传递给 PHP。

    这样,PHP 将直接同时接收 searchData 和 featTypes(如果有),而您不必从 PHP 中的字符串中解析出 featTypes。然后你需要用 javascript 做的就是提交表单并处理响应。同样,这是不知道后端发生了什么或您对其拥有什么控制权的情况。

    【讨论】:

    • 很棒的建议@bstonehill,我实际上都试过了。首先,我们尝试组合表单 - 这是最简单的方法,但问题是原始搜索表单位于 iframe 中,而高级搜索选项让事情变得不合适。我们尝试将 [] 添加到复选框名称,但它仍然不起作用。如您所见,复选框最初是隐藏的,复选框最初是未选中的,但用户希望默认选中复选框。
    • 明白了。我建议默认禁用复选框的唯一原因是防止在隐藏复选框时提交它们。但是在那种情况下,如果没有更多的后端知识,我真的不知道。你有处理 PHP 方面的人还是第三方?您是否使用 Firebug 等验证了 POST 请求中发送的实际数据?
    • 其他人编写了 php,但我已将我所做的更改加粗。请上。如果您查看上面的查询,您将看到两行。这个:$features = $_GET["featType"]; 这个:AND FT_TBL.FeatType IN ($features)
    • 你用的是mysql还是mysqli?
    • 以上都不是。使用 sql 服务器。谢谢
    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多