Изменить строку $ _GET в форме с множественным выбором - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть форма с несколькими вариантами выбора, и 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>

1 Ответ

1 голос
/ 03 февраля 2012

Вы можете попытаться построить 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: просто используйте [] в атрибуте имени:

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

Вы получите /?var1=param1+param2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...