2013-05-28 58 views
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作爲隱藏名稱,但值不同。 members vs event。我的問題是當你點擊提交按鈕時,收到的值總是最後一個隱藏的輸入值。例如event

是否有辦法決定選擇哪個字段,以便我可以將搜索結果指向正確的頁面。 (搜索頁面根據搜索引入不同的信息)。

感謝,

+5

在表單上不能有2個具有相同名稱的輸入。 –

+0

檢查出殘疾=「禁用」attr –

回答

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設置單個隱藏元素的值。

+0

我想我必須去用Javascript,因爲我需要輸入下拉列表。 – Romes

+1

@Romes在這種情況下,您可以將「OnChange」事件附加到將隱藏元素更新爲所需值的選擇框。 – MatthewMcGovern

+0

聽起來像一個偉大的計劃,謝謝。 – Romes