我在我的网站上构建了一个自定义的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作为隐藏名称,但值不同。members vs event。我的问题是,当您单击submit按钮时,收到的值始终是最后一个隐藏的输入值。例如event。
有没有办法确定选择了哪个字段,以便我可以将搜索结果定向到正确的页面。(搜索页面会根据搜索结果引入不同的信息)。
谢谢,
发布于 2013-05-28 23:56:56
因为您有两个同名的输入,所以只有一个输入会被设置到服务器。
如果你想让它们使用相同的名字,你需要使用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设置单个隐藏元素的值。
https://stackoverflow.com/questions/16795840
复制相似问题