2015-08-22 2 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

Смежные вопросы