Разделить данные из select

209
02 ноября 2017, 05:46

Есть множественный 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)?

Answer 1

Если прям так сильно нужно, можно попробовать сделать так, не самый оптимальный вариант конечно:

В примере используется 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
?>

Результат:

READ ALSO
Адаптивное изображение svg

Адаптивное изображение svg

Здравствуйте, столкнулся со следующей проблемой:

348
OnInput не работает из-за двух Form, какое решение?

OnInput не работает из-за двух Form, какое решение?

ЗдравствуйтеЕсть логика в OnInput, но из-за двух тэгов FORM которые, к сожалению, удалить нельзя, заюзать OnInput невозможно, как правильно решить задачу?...

373
Как правильно строить приложения в angularjs?

Как правильно строить приложения в angularjs?

У меня есть исходная страница (indexhtml) где имеется несколько

235
Python peewee не работает join. KeyError

Python peewee не работает join. KeyError

Пробую через join получить данные но возникает ошибка

253