Несколько селектов с одним содержанием
Извиняюсь если неправильно тему назвал.
В общем цель у меня была такая. Выводятся подряд несколько 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 крайне редко сталкиваюсь. |
Блин стоило написать на форуме, как понял ошибку.
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; } }Но все равно мне кажется решение некрасивым. Есть ли что-то более правильное? |
Часовой пояс GMT +3, время: 16:54. |