Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   change ф-я для select'ов (https://javascript.ru/forum/dom-window/55605-change-f-ya-dlya-select%27ov.html)

MasterDmx 06.05.2015 14:30

change ф-я для select'ов
 
Ребят, помогите решить задачку.

Суть в следующем:
Есть один select со списком регионов,
<select id="reg_region_name">
<option class="moscow_city_only" value="Москва">Москва</option>
<option class="adigeya_city" value="Адыгея">Адыгея</option>
<option class="altay_city" value="Алтайский край">Алтайский край</option>

(не ругайте за классы в option, по-другому не знал как сделать, что бы сохранить value нормальным)

После региона идет куча select'ов с городами каждого региона, по умолчанию все из них скрыты, а id этих селектов равен классу option.

Пользователь выбирает регион, срабатывает change ф-я, которая выбирает тот самый класс из option и подставляет его в fadeIn, тем самым делая видимым нужный select с выбором города. Тут проблем нет. На всякий приложу часть код открытия:
$('#fact_region_name').change(function() {
	names_fact = $("#fact_region_name option:selected").attr("class");
	$('#' + names_fact).fadeIn().addClass("fact_city_name");
});


Вот в чем проблема. Понадобилось сделать так, что бы при выборе этого самого города, в другом select'е выставлялось точно такое же значение. Т.е. пользователь должен выбирать регион и город дважды. Что бы его не напрягать нужно что бы при первом выборе селекта значения сдублировались на второй. С выбором региона проблем не возникло, а вот с выбором города никак не получается.

Нужно снова воспользоваться ф-ей change, но как ей указать какой именно из select'ов отследить, их ведь целая куча скрытых, а нужен тот, который открылся после выбора региона.

пытался сделать сначала так:
$('select.fact_city_name').change(function() {
 alert('прокатило');
});

Т.е. когда селект с городом открывался - ему присваивался класс "fact_city_name" и по нему пытался отследить его изменение. Не прокатило.

Потом попробовал провернуть через глобальную переменную names_fact, которая была равна классу option при выборе региона:
$( '#'+names_fact).change(function() {
 alert('прокатило');
});


Тоже не получилось. Надеюсь поможете разобраться в чем дело.

ksa 06.05.2015 14:34

MasterDmx, ты явно делаешь что-то не доброе...

kostyanet 07.05.2015 05:11

Баянище. Если вы закачиваете все данные в страницу, то закачивайте данные, а не кучу элементов уже отрендеренных по этим данным. То есть просто кладите в страницу дерево регионов и городов как оно есть на сервере, или где там.

Если вы не закачиваете все данные, то напишите функцию подкачки. Это элементарная вещь. Юзер выбрал рыгион, аякс выдал id, сервер выдал список городов, по списку скрипт сделал список и так далее.

new_guy 07.05.2015 05:21

Выложите html&css, попробуем разобраться.


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