Несколько селектов с одним содержанием
Извиняюсь если неправильно тему назвал.
В общем цель у меня была такая. Выводятся подряд несколько 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, время: 22:08. |