Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Списки select: отображение разных групп опций в зависимости от выбранного пункта (https://javascript.ru/forum/dom-window/52108-spiski-select-otobrazhenie-raznykh-grupp-opcijj-v-zavisimosti-ot-vybrannogo-punkta.html)

spo 04.12.2014 13:50

Списки select: отображение разных групп опций в зависимости от выбранного пункта
 
Имеется два выпадающих списка select (A и B).
Задача заключается в том чтобы в зависимости от выбранного пункта списка A, отображать различные наборы пунктов в списке B.

К примеру в списке A - страны, а в списке B - города.

С какой структурой лучше вообще работать - предусмотреть разные select для каждого пункта в списке A, группировать пункты в списке B или чтото еще?

Подскажите элегантный и грамотный способ.

spo 04.12.2014 16:11

Судя по всему это задача не версталы а программиста?

krutoy 04.12.2014 17:37

В простом случае никакие структуры не нужны
<html>
<head>
</head>

<body>



<select id="countries">
<option>russia</option>
<option>ukraine</option>
</select>

<select id="russia" style="display: none">
<option>Moskow</option>
<option>Sp-burg</option>
</select>

<select id="ukraine" style="display: none">
<option>Kiev</option>
<option>Harkov</option>
</select>


<script>

get=document.querySelector.bind(document)

countries=get("#countries")
russia=get("#russia")
ukraine=get("#ukraine")

countries.onchange=function(){
      switch(this.value){
         case("russia"): russia.style.display="block"; ukraine.style.display="none"; return
         case("ukraine"): ukraine.style.display="block"; russia.style.display="none"; return
      }
}




</script>
</body>
</html>

spo 04.12.2014 18:18

Спасибо. Ну а вообще такие вещи обычно реализуются php+ajax или выводить все селекты для всех стран, а потом управлять при помощи js это нормальная практика?

danik.js 04.12.2014 18:21

Цитата:

Сообщение от spo
выводить все селекты для всех стран, а потом управлять при помощи js это нормальная практика

Нет. Списки могут быть очень большими. Грузить все, учитывая что почти все из них не понадобятся - неразумно.

krutoy 04.12.2014 18:23

spo,
Я вообще не профи, поэтому по общепринятым практикам консультировать не могу. Но, исходя из здравого смысла, легко прийти к выводу, что переложить работу сервера на клиента всегда в интересах владельца ресурса.

krutoy 04.12.2014 18:26

Цитата:

Сообщение от danik.js
Списки могут быть очень большими

Вот если очень большие, тогда, может быть, неразумно. Не надо частный случай выдавать за "общепринятые практики", те за общий.

danik.js 04.12.2014 18:29

Цитата:

Сообщение от krutoy
Но, исходя из здравого смысла, легко прийти к выводу, что переложить работу сервера на клиента всегда в интересах владельца ресурса.

В данном случае тут ничего не перекладывается. Тупо гонится лишний трафик (если городов много).

krutoy 04.12.2014 18:55

Цитата:

Сообщение от danik.js
В данном случае тут ничего не перекладывается

Что значит не перекладывается, если ты дергаешь сервак каждый раз приподгрузке данных.


Часовой пояс GMT +3, время: 17:11.