2015-08-22 67 views
1

我很難以理解它應該是簡單的東西。在提交表單時,我有三個<select>輸入,它們在查詢字符串中需要它們的值;

domain.com/?filter=one,two,three

這可能嗎?我應該如何構造name屬性的表單?我也在想,如果我可以在提交後獲得$_GET值服務器端,並自己創建陣列並將其設置爲頁面的URL,但是技術上不是重定向?

理想情況下,這可以通過查詢字符串完成,因此URL可以被複制,粘貼或共享,但它也不是敏感數據。希望有人可以幫助...下面的一些粗糙的標記;

<form action="get"> 
    <select name="filter[]"></select> 
    <select name="filter[]"></select> 
    <select name="filter[]"></select> 
    <button type="submit>Submit</button> 
</form> 

..和是有原因的,爲什麼所有的<option>元素不在一個<select>,它的效果並不理想,我知道了!謝謝

+0

據我所知,沒有辦法在表單元素上構造'name'屬性來獲得一個名稱的逗號分隔值列表。使用括號的語法將導致查詢字符串看起來像'?filter [] = one&filter [] = two&filter [] = three',PHP應該將其解釋爲一個數組。如果需要,可以使用JavaScript和隱藏的輸入轉換爲以逗號分隔的值,但如果JavaScript被禁用或不可用,則這不起作用。 – skeggse

+0

@skeggse感謝您的回覆。我認爲jS可能是解決這個問題的唯一方法。 – Dan

回答

1

我不建議使用這段代碼片段,它只是爲了演示使用JavaScript的可能解決方案。

HTML:

<form action="get" id="myform"> 
    <input id="filter-result" name="filter" type="hidden"> 
    <input class="filter-value"> 
    <input class="filter-value"> 
    <input class="filter-value"> 
    <button type="submit">Submit</button> 
</form> 

的JavaScript:

var slice = Array.prototype.slice; 
var myform = document.querySelector("#myform"); 

myform.addEventListener('submit', function() { 
    document.querySelector("#filter-result").value = 
    slice.call(myform.querySelectorAll(".filter-value")) 
    .map(function(input) { 
     return input.value; 
    }).join(','); 
}); 

注意,過濾器值輸入沒有name,所以他們將不會被包含在GET查詢字符串。

+0

@丹如果此答案解決了您的問題,或者足以回答您的問題,請點擊上/下選項下的灰色複選框接受此問題。這樣,任何有類似問題的人都可以找到最能幫助你的答案。 – skeggse