Показать сообщение отдельно
  #1 (permalink)  
Старый 14.12.2010, 17:48
Новичок на форуме
Отправить личное сообщение для RevivaL Посмотреть профиль Найти все сообщения от RevivaL
 
Регистрация: 14.12.2010
Сообщений: 7

Помогите с зависящими select
Извините, может не там тему создал.

Взял скрипт "Динамические выпадающие списки" xhtml.ru/2006/02/11/dynamic-select/

Всё работает на 3-ри select, вот только мне нужно на 4-ри select, а на 4-ри не работает, подскажите что править или хоть в какую сторону смотреть, гугл перерыл нечёго не нашел. 4-й select не работает...

<script>
    function dynamicSelect(id1, id2) {

       // Сперва необходимо проверить поддержку W3C DOM в браузере.
        if (document.getElementById && document.getElementsByTagName) {

           // Определение переменных, ссылающихся на списки.
            var sel1 = document.getElementById(id1);
            var sel2 = document.getElementById(id2);

           // Клонирование динамического списка.
            var clone = sel2.cloneNode(true);

           // Определение переменных для клонированных элементов списка.
            var clonedOptions = clone.getElementsByTagName("option");

           // Вызов функции собирающей вызываемый список
            refreshDynamicSelectOptions(sel1, sel2, clonedOptions);

           // При изменении выбранного элемента в первом списке: // вызов функции пересобирающей вызываемый список
            sel1.onchange = function() {
                refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
            }
        }
    }

   // Функция для сборки динамического списка.
    function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) {

       // Удаление всех элементов динамического списка.
        while (sel2.options.length) {
            sel2.remove(0);
        }

        var pattern1 = /( |^)(select)( |$)/;
        var pattern2 = new RegExp("( |^)(" + sel1.options[sel1.selectedIndex].value + ")( |$)");

       // Перебор клонированных элементов списка.
        for (var i = 0; i < clonedOptions.length; i++) {

           // Если название класса клонированного option эквивалентно "select", либо эквивалентно значению option первого списка.
            if (clonedOptions[i].className.match(pattern1) ||
                clonedOptions[i].className.match(pattern2)) {

               // его нужно клонировать в динамически создаваемый список
                sel2.appendChild(clonedOptions[i].cloneNode(true));
            } 
        }
    }

   // Вызов скрипта при загрузке страницы
    window.onload = function() {
		dynamicSelect("select-1", "select-2");
		dynamicSelect("select-2", "select-3");
		dynamicSelect("select-3", "select-4");
    }
</script>


<form>
<select id="select-1" name="country" type="text" />
<option value="1">Украина</option>
<option value="2">Россия</option>
<option value="3">Америка</option>
</select>

<select id="select-2" name="area" type="text" />

<option class="1" value="22">Хмельницкая.обл</option>
<option class="1" value="23">Черкасская.обл</option>

</select>

<select id="select-3" name="sity" type="text" />
<option class="23" value="1">Черкассы</option>
<option class="23" value="2">Умань</option>
<option class="23" value="3">Смела</option>
</select>

<select id="select-4" name="streets" type="text" />
<option class="1" value="1">ул.Громова</option>
<option class="1" value="2">ул.Невского</option>
<option class="2" value="1">ул.Энгельса</option>
</select>
</form>
Ответить с цитированием