【问题标题】:Creating a simple form with checkboxes which i cant get to pass the correct URL创建一个带有复选框的简单表单,我无法传递正确的 URL
【发布时间】:2012-03-07 05:15:10
【问题描述】:

我似乎无法解决这个(我知道的很简单)问题。

我正在创建一个简单的标签搜索,它将在我的网站上搜索场所。 它设置为何时选择多个标签,它将带回所有具有所有标记的结果。所以我需要一些简单的代码,在主页上显示复选框并将 URL 更改为

.../placecategory/venue/?place_tags=place+venue

我想出了以下代码(目前只有 2 个选项)只是为了让它工作

<form 
  action="<?php bloginfo('home') ?>/placecategory/venue/?place_tags=hall+stage" 
         method="get" accept-charset="utf-8">
       <h2>Search</h2>
       <input type="checkbox" value="hall" name="place_tags">
       <label for="tag-105">hall</label>
       <input type="checkbox" value="stage" name="place_tags">
       <label for="tag-104">stage</label>
       <input type="submit" value="Search">
</form>

问题在于它将 URL 更改为

 .../placecategory/venue/?place_tags=hall&place_tags=stage

这并没有在我的网站上提取结果。我怎样才能改变这个以便它删除第二个 &amp;place_tags=(以及之后的每一个)?

我可以说我错过了一些愚蠢的东西,但这真的让我很沮丧!

提前致谢:)

【问题讨论】:

  • 理想情况下,您应该提交表单并将请求作为 POST 处理
  • 不要那样做。修复服务器端脚本,使其期望表单默认使用格式的数据。否则你最终会依赖 JS 而你真的不需要。 (PHP 很奇怪,它不会让您访问所有数据,除非您以 [] 结束重复名称或忽略 $_GET 并访问原始 URI ......所以重命名字段以以 [] 结尾)。

标签: php forms wordpress search checkbox


【解决方案1】:

这就是你要找的吗?

 <form action="<?php bloginfo('home') ?>/placecategory/venue" method="get" accept-charset="utf-8">
      <h2>Search</h2>
      <input type="checkbox" value="hall" name="place_tags[]">
      <label for="tag-105">hall</label>
      <input type="checkbox" value="stage" name="place_tags[]">
      <label for="tag-104">stage</label>
      <input type="submit" value="Search">
 </form>

【讨论】:

  • 抱歉,我可能不是很清楚,我不想在加载时勾选复选框。我的意思是当客户通过选择多个复选框进行搜索而不是尝试加载 place_tags=xxx&place_tags=yyy&place_tags=zzz 我希望它加载 place_tags=xxx+yyy+zzz
  • 您可以轻松地将请求作为数组发送。并使用 php 循环遍历数组。将请求作为帖子发送,这是最简单的方法。
【解决方案2】:

您可以使用 JS 解析这些值,并立即将它们放入隐藏输入中。

试试这个:

将 jQuery 库包含到 head 部分:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

然后在正文部分

<script type="text/javascript">

       function submit_me() {
                var values = $.map($("input.get-me:checked"),function(input){
                      return input.value;
                  });

                $('#hidden-input').val(values.join('+'));

                $('#your-form').submit();
      };

 </script>

       <input class="get-me" id="tag-105" type="checkbox" value="hall" name="one" />
       <label for="tag-105">hall</label>
       <input class="get-me" id="tag-104" type="checkbox" value="stage" name="two" />
       <label  for="tag-104">stage</label>
       <img width="50" height="50" src="get.png" onClick="submit_me()" />


        <form id="your-form" action="<?php bloginfo('home') ?>/placecategory/venue/" method="get" accept-charset="utf-8">
        <input id="hidden-input" type="hidden" value="" name="place_tags" />
        </form>

分配给您的输入 class="get-me" 并将您的图像放入 img。你必须只在其他浏览器上测试这个,然后是 FF。祝你好运。

【讨论】:

  • 感谢您的回复,我对 javascript 不太了解,有什么建议吗?谢谢
猜你喜欢
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多