Javascript.RU

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

Несколько селектов с одним содержанием
Извиняюсь если неправильно тему назвал.
В общем цель у меня была такая. Выводятся подряд несколько select изначально с одинаковыми option, но активный только первый остальные disabled. При выборе в первом он становится недоступным, а в следующем должно исчезнуть выбранное значение. Соответственно в третьем не должно быть первых двух. Использую YUI 2 (в свое время выбрал потому что drag and drop получилось только через него реализовать в нужном мне виде). На OnChange повестил такую функцию (где i это порядковый номер селекта, а n их количество)ю
function sel_check(i, n){
    if (parseInt(i)+1==parseInt(n)){
        $G('sub_but').disabled=false;
    }
    else {
        $G('i_'+i).disabled=true;
        var id=parseInt($G('i_'+i).value);
        i++;
        var el = new YAHOO.util.Element('i_'+i);
        for (k=0; k<el.get('childNodes').length; k++){
            if (parseInt(el.get('childNodes').item(k).value) == id){
                el.removeChild(el.get('childNodes').item(k))
                break;
            }
        }
        $G('i_'+i).disabled=false;
    }
}

Что бы не было вопросов, глобально прописано
$G = YAHOO.util.Dom.get;
В общем с двумя селектами проблем нет, а вот если больше, то в третьем или позже появляется значение выбранное ранее.
Сори, если туплю, но я все таки на php пишу и с js крайне редко сталкиваюсь.
Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2011, 22:26
Аватар для Andres
Новичок на форуме
Отправить личное сообщение для Andres Посмотреть профиль Найти все сообщения от Andres
 
Регистрация: 30.08.2009
Сообщений: 8

Блин стоило написать на форуме, как понял ошибку.
function sel_check(i, n){
    if (parseInt(i)+1==parseInt(n)){
        $G('sub_but').disabled=false;
    }
    else {
        $G('i_'+i).disabled=true;
        var id=parseInt($G('i_'+i).value);
        i++;
        for (kk = i; kk < n; kk++){
            var el = new YAHOO.util.Element('i_'+kk);
            for (k=0; k<el.get('childNodes').length; k++){
                if (parseInt(el.get('childNodes').item(k).value) == id){
                    el.removeChild(el.get('childNodes').item(k))
                }
            }
        }

        $G('i_'+i).disabled=false;
    }
}
Но все равно мне кажется решение некрасивым. Есть ли что-то более правильное?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько созданных элементов располагаются в одной строке. Как этого избежать? Hold Events/DOM/Window 1 21.01.2011 23:52
Несколько одинаковых таблиц. Обращение к отдельным элементам в них. zaytsewa Элементы интерфейса 7 11.11.2010 09:08