Есть множественный select
с группами:
<select name="place[]" multiple>
<optgroup label="Станции метро">
<option value="metro1">Cтанция 1</option>
<option value="metro2">Cтанция 2</option>
</optgroup>
<optgroup label="Районы">
<option value="district1">Район 1</option>
<option value="district1">Район 2</option>
</optgroup>
</select>
При передаче в обработчик, получаем подобный массив:
"place":["metro1","metro2","raion1"]
Вопрос: как, если, конечно, возможно, разбить передаваемые данные на вложенные массивы?
Чтобы получилось вроде:
"place":{"metro":["metro1", "metro2"],"district":["district1"]}
Если невозможно, то какие способы есть для разделения подобных данных (на ум приходят только префиксы для value
)?
Если прям так сильно нужно, можно попробовать сделать так, не самый оптимальный вариант конечно:
В примере используется Jquery
HTML
<form action="test.php" method="GET">
<select name="place[]" id="placeID" multiple>
<optgroup data-name="metro" label="Станции метро">
<option value="metro1">Cтанция 1</option>
<option value="metro2">Cтанция 2</option>
</optgroup>
<optgroup data-name="district" label="Районы">
<option value="district1">Район 1</option>
<option value="district1">Район 2</option>
</optgroup>
</select>
<input type="hidden" name="select_array" id="select_array">
<input type="submit" value="Вывод">
</form>
Jquery
$('#placeID').change(function() {
var arr = {};
$('select :selected').each(function(){
$('optgroup ').each(function() {
arr[$(this).data('name')] = $(this).find('option:selected').map(function() {
return $(this).val();
}).get();
});
console.log( JSON.stringify(arr) ); //Вывод для понимания
$("#select_array").val( JSON.stringify(arr) );
});
php
<?php
print_r($_GET['select_array']);
print_r(json_decode( $_GET['select_array'] ,true)); //parse
?>
Результат:
Виртуальный выделенный сервер (VDS) становится отличным выбором
ЗдравствуйтеЕсть логика в OnInput, но из-за двух тэгов FORM которые, к сожалению, удалить нельзя, заюзать OnInput невозможно, как правильно решить задачу?...
У меня есть исходная страница (indexhtml) где имеется несколько