在具有多个select的表单上更改$ _GET字符串

时间:2012-02-03 11:22:49

标签: php forms select get

我有一个包含多个选项的表单,我在提交表单时得到的网址是这样的:

tld.com/?var1=opt1$var1=opt2&var1=opt3&var2=opt1&var2=opt2

我想知道的网址是:

tld.com/?var1=opt+opt2+opt3&var2=opt1+opt2

我不想将$ _POST方法与存储在数组中的选项一起使用,因为我希望网址对于任何自定义搜索都是唯一的。

表单看起来像这样:

<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>

1 个答案:

答案 0 :(得分: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;
});

您将获得网址?name1+name2+name3=value1+value2+value3

UPD:只需在名称属性中使用[]

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

您将获得/?var1=param1+param2