Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Зависимые списки! (https://javascript.ru/forum/dom-window/29397-zavisimye-spiski.html)

DSHA 26.06.2012 13:56

Зависимые списки!
 
Здравствуйте! Возникла задача создать интерфес ввода населённого пункта по шагово, сначала пользователь выбирает страну, поотм регион и так далее... Классическая задача, но я до этого только вставлял готовые javaскрипты, куда надо и не разрабатывал их сам, сейчас надо релаизовать это самому... AJAX не подходит... поэтому поступил следющим образом: Формирую на стороне сервера списки
по типу:
Видимый
<select size="1" onchange="List_block();" name="region_id" class="block" id="parent">
<option value="23" id="23">Выбрать страну</option>
<option value="231">Россия</option>
<option value="258">Республика беларусь</option>
<option value="264">Латвия</option>
<option value="266">Украина</option>
<option value="272">Эстония</option>
<option value="274">Литва</option>
<option value="276">Казахстан</option>
</select>

Скрытые:
Их несколько для каждой страны
Код:

<select size="1" onchange="List_block(3);" name="region_258" class="hidden" id="258">
<option value="23" id="23">Выбрать регион</option>
<option value="259" id="259">Минск</option>
<option value="260" id="260">Брест</option>
<option value="261" id="261">Витебск</option>
<option value="262" id="262">Гомель</option>
<option value="263" id="263">Гродно</option>
</select>

Пири выбре страны пользователю паказывается список у которого ID совпадает значением valu.
Меняю значение свойства display на bloc ниже приведённым скриптом:
function List_block(){
	var a = document.getElementById("parent").value^;
	document.getElementById(a).style.display='none'^;
	document.getElementById(a).style.display='block'^;
	var key=a^;
}

Может эта реализация и через опу, но я делал по методу минимум JS:)
ВОПРОС: Списки я выбираю но, допустим пользователь выбрал Россию, а потом передумал выбрал Беларусь, как спрятать список с регионами России. перед каждым новым выбором скрывать списки открытые до этого и только после этого открывать новый... Спасибо.

ksa 26.06.2012 14:08

Цитата:

Сообщение от DSHA
Может эта реализация и через опу

Это ты на страницу грузишь все для всех стран?
Если так - то таки да, через опу. :yes:

Deff 26.06.2012 14:10

DSHA,
Есть на jQuery древовидное меню от devote - можно его приспособить под
эту штуку http://javascript.ru/forum/dom-windo...tml#post182559
по клику на нужную ссылку заносим нумер в инпут, - на серве нумер идентифицируем со всеми шагами выбора
Хотя можно и на клиенте выбрать всю последовательность выбора, к примеру проставив data="Тут что-то" в каждый тег LI

DSHA 26.06.2012 14:19

Цитата:

Сообщение от ksa (Сообщение 184218)
Это ты на страницу грузишь все для всех стран?
Если так - то таки да, через опу. :yes:

Там в БД 300 строк. только крупные города и не все страны... Сейчас это вообще одним списком в виде дерева грузится...

DSHA 26.06.2012 14:21

Цитата:

Сообщение от ksa (Сообщение 184218)
Это ты на страницу грузишь все для всех стран?
Если так - то таки да, через опу. :yes:

Deff, спасибо смотрю ...

ksa 26.06.2012 14:45

Цитата:

Сообщение от DSHA
Там в БД 300 строк

Ну если так...
Если сделать свои комбобоксы - можно и поинтереснее придумать решение...

DSHA 26.06.2012 20:20

Полсе изучения данной проблемы решил сделать вот так как в этом примере:
http://www.linkexchanger.su/2008/39.html
Всё прикрутил теперь думаю как из input отравлять на сервер не название города, а его ID в БД

DSHA 26.06.2012 20:23

Как ещё паралельно создавть какой нибудь input hidden и отправлять на сервер его значение?

<script type="text/javascript">
02	$(document).ready(function(){
03	  $("#example").autocompleteArray([
04	    "Магадан",
05	    "Магас",
06	    "Магнитогорск",
07	    "Майкоп",
08	    ........
09	    "Муром",
10	    "Мценск",
11	    "Мыски",
12	    "Мытищи",
13	    "Мышкин"
14	    ],
15	    {
16	    delay:10,
17	    minChars:1,
18	    matchSubset:1,
19	    autoFill:true,
20	    maxItemsToShow:10
21	    }
22	  );
23	});
24	</script>

Deff 26.06.2012 22:07

DSHA,
Если использовать тот скрипт ?
Или ?
==========================
То можно по событию конечного выбора, ( клику по ссылке - не переходя по ссылке:
Либо: отправлять форму с нужным городом
Либо добавлять в форму поле с городом(если чел может выбрать несколько вариантов одновременно) - а окончательную отправку делать по кнопке

DSHA 27.06.2012 00:40

Окончательную отправку делать по кнопке, но
Если использовать скрипт jQuery Autocomplete: автозаполнениет то по кнопке я на сервер отправлю название города, а мне необходимо отправить id_город... Вот я и подумал как этот скрипт заставить формировать параллельно ещё один input, но скрытый( hidden) значением которого и будет id_города.и отправлять это значение из формы на сервер по кнопке. эта форма регистраци пользователя на сайте он указывает свое место положение.


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