2012-02-03 44 views
0

我有一個表格與一對夫婦多選擇和URL提交表單時,我得到的是這樣的:

tld.com/?var1=opt1$ VAR1 = OPT2 & VAR1 = OPT3 & VAR2 = OPT1 & VAR2 = OPT2

我喜歡竟被獲得的URL爲:

tld.com/?var1=opt+opt2+opt3 & VAR2 = OPT1 + OPT2

我不想使用帶有存儲在數組中的選項的$ _POST方法,因爲我希望url對於任何自定義搜索都是唯一的。

的形式看起來是這樣的:

<form action="" method="get"> 
    <select name="var1" multiple="multiple"> 
     <option value="var1">one</option> 
     <option value="var2">two</option> 
     <option value="var3">three</option> 
     <option value="var4">four</option> 
     <option value="var5">five</option> 
    </select> 
    <select name="var2" multiple="multiple"> 
     <option value="var1">one</option> 
     <option value="var2">two</option> 
     <option value="var3">three</option> 
     <option value="var4">four</option> 
     <option value="var5">five</option> 
    </select> 
    <input type="submit" value="Send" /> 
</form> 
+0

爲什麼foo = 1 + 2 + 3而不是* standard * foo = 1&foo = 2&foo = 3? – Quentin 2012-02-03 11:49:56

+0

我無權訪問處理url變量的腳本......我只對必須生成url的表單有訪問權限。對於多個值,結構需要爲?foo = 1 + 2 + 3 – matejokr 2012-02-03 11:57:46

+0

@Quentin因爲這是標記爲PHP,語法爲'foo [] = 1&foo [] = 2&foo [] = 3'您可以選擇提供鍵: 'FOO [巴] = 1&FOO [巴茲] = 2'。 PHP透明地將其轉換爲數組結構。輸入字段如下所示:''。 – RikkusRukkus 2012-02-03 11:59:20

回答

1

你可以嘗試建立在客戶端2個陣列,並通過形式發佈,但在服務器端,您將獲得2個陣列,並從他們做對呢。你真的需要需要嗎?

這將是像

$("#myForm").submit(function(){ 
var myKeys = new Array(); 
var myValues = new Array(); 
$("#myForm input").each(function(n,element){ 
    myKeys[] = $(element).attr("name"); 
    myValues[] = $(element).val(); 
}); 
$("#hiddenInput").attr("name", myKeys.join('+')); 
$("#hiddenInput").attr("value", myValues.join('+')); 
return true; 
}); 

你會得到URL ?name1+name2+name3=value1+value2+value3

UPD:只需使用[]的name屬性:

<input name="var1[]" value="param1"> 
<input name="var1[]" value="param2"> 

你會得到/?var1=param1+param2

+0

也許我還不夠清楚,或者變量的價值讓你失望。我需要返回的url一起加入一個變量的值。因此,如果在一個選擇下,我有值1和2選擇的網址是現在嗎?foo = one&foo = 2我需要它是?foo =一+兩個 – matejokr 2012-02-03 12:02:12

+0

所以只有變量的值必須連接在一起,名稱需要保持獨立 – matejokr 2012-02-03 12:03:08

+0

我已經更新了我的答案;) – 2012-02-03 12:13:58

相關問題