Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.12.2014, 13:50
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

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

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

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

Подскажите элегантный и грамотный способ.
Ответить с цитированием
  #2 (permalink)  
Старый 04.12.2014, 16:11
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Судя по всему это задача не версталы а программиста?
Ответить с цитированием
  #3 (permalink)  
Старый 04.12.2014, 17:37
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

В простом случае никакие структуры не нужны
<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>
Ответить с цитированием
  #4 (permalink)  
Старый 04.12.2014, 18:18
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Спасибо. Ну а вообще такие вещи обычно реализуются php+ajax или выводить все селекты для всех стран, а потом управлять при помощи js это нормальная практика?
Ответить с цитированием
  #5 (permalink)  
Старый 04.12.2014, 18:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от spo
выводить все селекты для всех стран, а потом управлять при помощи js это нормальная практика
Нет. Списки могут быть очень большими. Грузить все, учитывая что почти все из них не понадобятся - неразумно.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 04.12.2014, 18:23
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

spo,
Я вообще не профи, поэтому по общепринятым практикам консультировать не могу. Но, исходя из здравого смысла, легко прийти к выводу, что переложить работу сервера на клиента всегда в интересах владельца ресурса.
Ответить с цитированием
  #7 (permalink)  
Старый 04.12.2014, 18:26
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от danik.js
Списки могут быть очень большими
Вот если очень большие, тогда, может быть, неразумно. Не надо частный случай выдавать за "общепринятые практики", те за общий.
Ответить с цитированием
  #8 (permalink)  
Старый 04.12.2014, 18:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от krutoy
Но, исходя из здравого смысла, легко прийти к выводу, что переложить работу сервера на клиента всегда в интересах владельца ресурса.
В данном случае тут ничего не перекладывается. Тупо гонится лишний трафик (если городов много).
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 04.12.2014, 18:55
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от danik.js
В данном случае тут ничего не перекладывается
Что значит не перекладывается, если ты дергаешь сервак каждый раз приподгрузке данных.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подставить значение в action="" в зависимости от выбранного пункта select nkl Элементы интерфейса 2 13.05.2013 14:06