0

我在我的网站上建立了一个自定义form搜索过滤。我正在使用隐藏的输入字段来决定选择了哪种类型的搜索过滤器。该值被传递,我在我的搜索页面上检查该值是什么,然后直接进入正确的搜索结果页面,如下所示:

<?php

    $search_refer = $_GET['search_type'];

    if($search_refer == 'members') {
        load_template(TEMPLATEPATH . '/search-members.php');
    } else if($search_refer == 'event') {
        load_template(TEMPLATEPATH . '/search-member-event.php');
    } else {
        load_template(TEMPLATEPATH . '/search-site.php');
    }

?>

这是 HTML/PHP 中的两个字段

<div class="state"> // Sorting by user State
    <input type="hidden" name="search_type" value="members">
    <select id="stateDrop" name="state">
        <option value="">State</option>
        <?php
            foreach($states as $state) {
                echo '<option value="'.$state.'">'.$state.'</option>';
            }
        ?>
    </select>
</div>
<div class="sort-event"> // Sorting by an Event
    <input type="hidden" name="search_type" value="event">
    <select id="eventDrop" name="event">
        <option value="">Event</option>
        <?php
            $args = array(
                'post_type' => 'events',
                'order' => 'ASC'
            );

            $eQuery = new WP_Query( $args );

            while( $eQuery->have_posts() ) : $eQuery->the_post();

                echo '<option value="'.$eQuery->post->post_title.'">'.$eQuery->post->post_title.'</option>';

            endwhile;

            wp_reset_query();
        ?>  
    </select>
</div>

两者都将名称search_type作为隐藏名称,但值不同。membersevent。我的问题是当您单击提交按钮时,收到的值始终是最后一个隐藏的输入值。例如event

有没有办法决定选择哪个字段,以便我可以将搜索结果定向到正确的页面。(搜索页面根据搜索获取不同的信息)。

谢谢,

4

1 回答 1

2

由于您有两个具有相同名称的输入,因此只有其中一个会被设置为服务器。

如果您希望他们使用相同的名称,您将需要使用 POST 和两个表单,这将需要两个单独的提交按钮但转到同一页面。这样您就可以根据过滤器提交所需的表单。

<form action="yourpage.php" method="post">
      <input type="hidden" name="search_value" value="members"/>
       ... member stuff
      <input type="submit" value="Filter Members"/>
</form>
<form action="yourpage.php" method="post">
      <input type="hidden" name="search_value" value="event"/>
       ... event stuff
      <input type="submit" value="Filter Events"/>
</form>

或者您可以使用单选按钮的输入类型,因为它支持具有相同的名称,因为一次只能选择一个值。

Event: <input type="radio" name="search_type" value="event"/>
Members: <input type="radio" name="search_type" value="members"/> 



// Then in PHP $_POST["search_type"] will hold the selected value.

如果您希望坚持使用 GET,您可以在用户单击链接之前使用 JavaScript 设置单个隐藏元素的值。

于 2013-05-28T15:56:55.627 回答